@chyoo1991
2015-09-09T05:56:42.000000Z
字数 1083
阅读 1293
git
workflow
最近在实习的过程中,很多的接触了
git
命令,有一些时候使用错了,造成了不便。所以总结一下Git的常用命令,以及开发时用的工作流。
简而言之,工作流就是如何使用
Git
这个分布式版本控制系统,与团队的成员协调一致地完成开发任务。
维持一个中央库(master)。每个人克隆master,各自的提交到本地,在合适的时间节点push到master。
容易遇到的问题是push被拒绝。这个原因在于别人已经先提交了,master的节点信息已经更改,本地再提交上去,会发生冲突。
此时:
git fetch // 取得远程分支信息
git rebase origin master // 将自己本地的commit置于远程新的节点之后实际上是用patch方式
// 也可以用 git pull --rebase origin master
git status //出现冲突的时候使用这个命令看冲突在哪里
git add <some file> // 解决冲突之后继续rebase
git rebase --continue
git rebase --abort // 如果解决冲突失败,可以通过这种方式恢复到rebase之前
git push origin master // 完成rebase之后 push到中央服务器
补充:
在rebase的过程中,也许会出现冲突(conflict)。在这种情况下Git会停止rebase并会让你去解决冲突。在解决完冲突后,用
git add
命令去更新这些内容的索引(index)。 然后,你无需执行git commit
,只要执行:git rebase --continue
这样git会继续应用(apply)余下的补丁。
我们在使用
git pull
命令的时候,可以使用--rebase参数,即git pull --rebase
,这里表示把你的本地当前分支里的每个提交(commit)取消掉,并且把它们临时 保存为补丁(patch)(这些补丁放到".git/rebase"目录中),然后把本地当前分支更新为最新的origin/master分支,最后把保存的这些补丁应用到本地当前分支上。
使用
git pull --rebase origin master
的时候,忘记了后面的参数rebase
,也可以实现合并。但是最后会生成一个merge commit。为了让commit看起来干净并且呈现一条线状,更适合的做法是用rebase。两者的区别见此处。
在开发过程中,熟悉了集中式后可以使用分支工作流。分支工作流的主要特点在于两点: