Git 是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。
Git的安装
1 | sudo apt-get install git-core |
Git的初始化和配置
配置Git
1 | git config --global user.name "silov" #配置本地git账户的姓名 |
另外在每个具体的项目中还可以配置局部信息, 只需在项目目录下,修改 .git/config
文件,添加如下部分即可:
1 | [user] |
比如,你本地机器的项目既有公司的项目,又有自己GitHub上的项目,两边提交分别需要不同的提交信息时,就可以这么设置。
初始仓库
1 | git clone https://github.com/xxx/xxx.git localxxx #克隆远程库的代码到本地的localxxx目录 |
创建分支
取回远程库上的分支,并创建对应的本地分支(假设:远程分支号pmt16825)
1 | git fetch origin #取回远程origin库上的分支和更新 |
Coding
…. (假设:更改readme文件)
提交代码到本地仓库和远程仓库
1 | git add readme #添加修改到git的暂存区 |
合并分支到主线(假设:当前分支是在lpmt16825)
1 | git rebase origin/master #将主线上最新的代码更新到当前分支 |
注1: 这里进行了 rebase
,可以避免后面 master
分支中 merge lpmt16825
时产生冲突.
注2: 如果当前分支和主线对同一个文件进行了修改时,就有可能产生冲突,要先用 git mergetool
解决冲突,然后再用 git rebase --continue
继续进行rebase
注3: 这里也可以利用git merge获取主线的最新更新,但是这样会导致后面主线merge了当前分支之后,提交线会变得很难看,不便于以后的代码追踪
1 | git push origin lpmt16825:pmt16825 -f #强制更新远程库 |
Git的一些基本命令
1 | git remote [-v] #显示所有的远程仓库 |
git的一些工具
sourcetree
一款图形化的git工具tig
一款命令行的git工具
rebase 和 merge 的区别
对分支线的影响
假设一个git本地库的分支如下:
上面数字的顺序代表着提交的时间顺序
做如下操作
1 | git checkout branch1 |
branch1中的提交记录为
做如下操作
1 | git checkout branch2 |
branch1中的提交记录为
由上面的结果可以得知
git rebase
是按照分支内部的提交顺序来重新组织提交顺序git merge
是按照提交的时间顺序来重新组织提交顺序git merge
会新增一个提交记录这次合并
所以在平时的开发中,需要获取主线的最新代码时,请使用 rebase
而不是 merge
,这样使得代码回滚变得很轻松