0068 Git入门的第一节课
这是 猴子都懂的Git入门 的学习笔记
Git安装与配置
下载安装Git:http://git-scm.com/
从开始菜单启动Git Bash
$ git --version
git version 2.12.2.windows.2 # 说明Git安装成功
# 下面是一些设置,这些设置都保存在C:\Users\Administrator\.gitconfig下面,如果找不到,就用everything搜索
git config --global user.name "sonng" # 设置用户名,将来变更记录中会记录,git log命令可以查看变更记录
git config --global user.email "sonng@abc.com" # 设置用户的邮箱,变更记录中也会记录
git config --global color.ui auto # 让git命令以彩色显示
git config --global alias.chkt checkout # 将checkout命令简化为chkt
git config --global core.quotepath off # 有了这个设置,在Windows命令行下,存在非ASCII字符时才能正常显示
操作本地仓库
$ cd i: # 进到I盘根目录下
$ mkdir tutorial # 创建目录
$ cd tutorial # 进入该目录
$ git init # 创建本地仓库,初始化
Initialized empty Git repository i:/tutorial
在tutorial里建立一个名为『sample.txt』的文本文件,并写入一下内容:
连猴子都懂的Git命令
$ git status # 查看状态,然后会显示下面这样。可以看到新建的sample.txt还处于untracked未索引状态
On branch master
Initial commit
Untracked files:
(use "git add <file>..." to include in what will be committed)
sample.txt
nothing added to commit but untracked files present (use "git add" to track)
$ git add sample.txt # 根据提示用add命令将该文件加入索引。加入所有文件:git add .
$ git status # 再看下状态,发现sample.txt已经被索引,下面就可以提交到仓库了
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: sample.txt
$ git commit -m "01 sample.txt第一次提交" # 提交到仓库
[master (root-commit) a00d89f] 01 sample.txt第一次提交
1 file changed, 1 insertion(+)
create mode 100644 sample.txt
$ git status # 看下状态
On branch master
nothing to commit, working tree clean # 看来提交成功了
$ git log # 看下日志
commit a00d89fc564e55e78624f2fca021db4f0d983417 # 这个常常的字符串,是用来唯一标识此次提交的
Author: sonng <sonng@qq.com> # 前面设置的用户和用户邮箱现在除了了,说明是谁提交的,联系方式是什么
Date: Thu Jun 29 08:45:45 2017 +0800
01 sample.txt第一次提交 # 前面提交时,添加的注释信息
$ gitk # 这是个图形化工具
操作远程仓库
一个软件往往是一个团队完成的,这就涉及到代码的同步
到github.com开个账户,settings里面有个Repository,建立一个远程仓库,并获得地址:https://github.com/sonng233/mastergit.git ,其中mastergit是仓库名
$ git remote add origin https://github.com/sonng233/mastergit.git
# remote命令用于添加远程仓库,origin是仓库别名,后面的url是仓库地址
# 为什么名称是origin:因为在将来pull或者push的时候,如果省略仓库名,那默认的仓库名就是origin。就是为了省事
$ git push origin master # 将本地仓库push到远程origin仓库的master分支。这里还会要求github的用户名/密码
# 然后打开github的这个仓库,可以看到跟本地相同的sample.txt
# 团队协作,自己的代码要push上去,别人也会pull你的代码下来
$ cd e:/
$ git clone https://github.com/sonng233/mastergit.git # 将远程仓库全部克隆复制下来,会要求github的用户名密码
# 查看是否有sample.txt,并查看其内容,并添加这条内容:add 把变更录入到索引中
$ git add sample.txt # 添加到索引
$ git commit -m "02 添加add说明" # 提交到本地仓库
$ git push # push到远程仓库,在克隆的仓库内,push时可以省略仓库名称和分支
# 到github网站上可以看到添加了“add 把变更录入到索引中”的sample.txt
$ cd i:/tutorial
$ git pull origin master # 将远程仓库pull拉取下来。别人修改了远程仓库,将修改后的结果拉取到本地仓库
# 可以看到tutorial仓库中的sample.txt已更新
$ git log # 通过日志查看下,可以看到2此更改记录
合并冲突的记录
多人编辑同一个文档,很容易产生冲突
在同一个文档同一个位置,自己修改了commit到本地仓库,还没有push到远程仓库
别人也修改了同一文档同一位置,并push到了远程仓库
这时候,自己push到远程仓库会被拒绝rejected,这时候就要修改本地仓库的文档
# 先制造一个冲突
# 将I盘下的tutorial中的sample.txt修改下,加入如下内容:commit 记录索引的状态
$ cd i:/tutorial # 先到 I 盘下操作
$ git add sample.txt
$ git commit -m "03 添加commit说明" # commit到本地仓库,先不push到远程仓库
$ cd e:/tutorial # 然后到 E 盘下操作。将该目录下的sample.txt修改:pull 取得远端数据库的内容
$ git add sample.txt
$ git commit -m "04 添加pull说明"
$ git push # push到远程仓库
$ cd i:/tutorial # 到 I 盘下操作
$ git push # push远程仓库。此时会失败被拒绝rejected
# 下面手动解决冲突
$ git pull origin master # 将远程仓库拉取下来,然后会显示合并时的冲突信息:Merge conflict in sample.txt
# 打开sample.txt文件,如下面所示
连猴子都懂的Git命令
add 把变更录入到索引中
<<<<<<< HEAD
commit 记录索引的状态
=======
pull 取得远端数据库的内容
>>>>>>> 4c0182374230cd6eaa93b30049ef2386264fe12a
"======"以上是本地仓库的内容,以下是远程仓库的内容
将以上冲突修改后保存,再add/commit/push
最后看下更改记录
$ git log --graph --oneline
总结
$ git add sample.txt # 添加到索引
$ git commit -m "提交说明" # 提交到本地仓库
$ git push origin master # push到远程仓库
$ git pull origin master # 从远程仓库pull下来
$ git clone https://github.com/sonng233/mastergit.git # 克隆远程仓库
$ git config --global user.name "sonng" # 设置用户名,将来变更记录中会记录,git log命令可以查看变更记录
$ git config --global user.email "sonng@abc.com" # 设置用户的邮箱,变更记录中也会记录
$ git config --global color.ui auto # 让git命令以彩色显示
$ git config --global alias.chkt checkout # 将checkout命令简化为chkt
$ git config --global core.quotepath off # 有了这个设置,在Windows命令行下,存在非ASCII字符时才能正常显示
$ git --version #
$ git init # 创建本地仓库,初始化
$ git status # 查看状态,然后会显示下面这样。可以看到新建的sample.txt还处于untracked未索引状态
$ git log # 看下日志
$ git remote add origin https://github.com/sonng233/mastergit.git # 设置远程仓库
$ git log --graph --oneline # 查看更改记录
0068 Git入门的第一节课的更多相关文章
- nodeJs入门的第一节课
nodejs是什么? nodejs的架构模式以及优缺点 nodejs异步IO nodejs事件驱动 nodejs单线程 nodejs应用场景 一.nodejs是什么? 1.1nodejs是一个开源的. ...
- [iOS]Objective-C 第一节课
Objective-C 第一节课 本节课的主要内容 创建Objective-C的第一个工程 HelloWorld Objective-C中的字符串 创建Objective-C的第一个工程 打开Xcod ...
- centos mysql 实战 第一节课 安全加固 mysql安装
centos mysql 实战 第一节课 安全加固 mysql安装 percona名字的由来=consultation 顾问+performance 性能=per con a mysql ...
- Centos安装自定义布局才能自己划分各个区的大小ctrl+z ,fg ,route -n ,cat !$ ,!cat ,XShell 设置, ifconfig CentOS远程连接 Linux中的输入流 第一节课
Centos安装自定义布局才能自己划分各个区的大小ctrl+z ,fg ,route -n ,cat !$ ,!cat ,XShell 设置, ifconfig CentOS远程连接 Linux中 ...
- Java第一节课动手动脑
在第一节课的动手动脑中,主要解决四则运算问题. 首先第一个是出30道四则运算题目,在100以内.这个问题需要控制随机数生成的范围和结果的范围在100以内就可以. 第一次改进是3点:一为避免重复,二为定 ...
- 左神算法第一节课:复杂度、排序(冒泡、选择、插入、归并)、小和问题和逆序对问题、对数器和递归(Master公式)
第一节课 复杂度 排序(冒泡.选择.插入.归并) 小和问题和逆序对问题 对数器 递归 1. 复杂度 认识时间复杂度常数时间的操作:一个操作如果和数据量没有关系,每次都是固定时间内完成的操作,叫做常数 ...
- 初学Python——第一节课
一.Python语言的特性: 1.与C语言不同,Python语言是一门解释性语言.程序在执行过程中,执行一步.编译一步. 2.Python是一个动态类型语言,不需要定义变量的数据类型. 3.Pytho ...
- JAVAWEB第一节课的课后思考
第一开发一个网站需要的一些技术 至少熟悉一种建站程序.(html,javascript等等)对空间和域名的知识有一定的了解.有一些美工基础(例如ps设计等等).对编程有一些了解.HTML的代码知识基本 ...
- springboot的第一节课
快速开始spring boot应用 官方向导搭建boot应用 地址:http://start.spring.io/ 设置项目属性: 3.解压,拷贝到工作空间,导入maven项目 4.写Controll ...
随机推荐
- drupal7整合Discuz康盛UC用户中心ucenter,ucuser模块
drupal7整合Discuz康盛UC用户中心ucenter,ucuser模块Drupal7整合UC用户心的模块,ucenter,康盛这个用户中心我就不多说了哈.参考了以前不知在哪里下载的一个drup ...
- C/C++调用java---JNI常用函数
DefineClass jclass DefineClass(JNIEnv *env, jobject loader, const jbyte *buf, jsize bufLen ...
- JNI字段描述符
“([Ljava/lang/String;)V” 它是一种对函数返回值和参数的编码.这种编码叫做JNI字段描述符(JavaNative Interface FieldDescriptors).一个数组 ...
- go语言基础之不同目录
1.不同目录 不同目录,包名不一样 调用不同包里面的函数,格式:包名,函数名() 调用别的包的函数,这个包函数名字如果是小写,无法让别人调用,要想别人能调用,必须首字母大写. 需要配置环境变量 临时配 ...
- 度量Web性能的关键指标
自网站诞生以来,响应速度/响应时间一直都是大家关心的话题,而速度慢乃是网站的一个杀手,正当大家以为四核和宽带能力的提升能够解决这些问题时,Wi-Fi和移动设备为热点移动互联网又悄然兴起. 在2006年 ...
- JobControl 的实现原理
本文地址:http://www.cnblogs.com/archimedes/p/hadoop-jobcontrol.html,转载请注明源地址. 引入实例:贝叶斯分类 贝叶斯分类是一种利用概率统计知 ...
- Android从无知到有知——NO.2
这几天虽说偶遇瓶颈.但也渐入佳境.因为之前没有接触过android,所以作为一个新手不会给自己过高的要求.相比于去年做的分布式资源检索,今年的移动开发着实要简单一些.尽管其本质没有太大的差别,但从用户 ...
- Win10系统开启Linux Bash命令行
Win10系统开启Linux Bash命令行 导读 在Build2016上微软为了拉拢开发者发了个大招,那就是Win10一周年更新集成原生Linux Bash命令行功能,这将允许开发者或用户在Wind ...
- 使用notepad++进行替换
将 aaa bbb ccc 转化为 #define AAA aaa #define BBB bbb #define CCC ccc 查找(.*),替换为#define $1 "$1" ...
- gem 更新源设置,ruby安装
gem sources --remove http://rubygems.org/ gem sources -a http://ruby.taobao.org/ gem sources -l 结果只有 ...