编辑
相似于SVN这种集中式版本治理,三年前刚来上海工作时候,在华为驻场下班,华为用的就是SVN,印象最深的就是那个小乌龟的图标;起初到里面工作,慢慢发现用Git的十分多,缓缓学习理解发现Git这种分布式的版本治理的确很好很弱小,前面也就重点学习Git的分支管理策略了(其实SVN我当初压根就不会了,哈哈。。。)
编辑
centralized workflows
以Bitbucket的官网文档的实例作为简略介绍:例如Mary当初想要开发,在开发前她能够通过checkout命令建设一个新的分支:
编辑
Feature Branch Workflow: comit changesBefore she starts developing a feature, Mary needs an isolated branch to work on. She can request a new branch with the following command
git checkout -b marys-feature master
而后Mary能够在这个本地进行相干的更改:
git status git add <some-file> git commit
接着她能够一直将本地批改上传至个性分支的核心仓库中,直到本人全完批改实现
编辑git push -u origin marys-feature
编辑git push
而后,她在git gui(GitHub或GitLab等)中提交pull申请,申请将marys个性合并到master中,团队成员将主动收到告诉。
编辑
Mary的共事Bill收到了pr,Bill感觉在合并到正式我的项目中之前还须要做一些批改,于是在pr的回复中对Mary进行告知,接着Mary持续批改开发,实现后再次提交pr:
编辑
一旦Bill筹备承受pull request,有人须要将该特色merge到稳固的我的项目中(这能够由Bill或Mary来实现)
编辑git checkout master git pull git pull origin marys-feature git push
编辑
在GitHub上进行根本的演示(理论工作中,公司用的还是GitLab较多,前面会有总结演示)1.1) 先应用git checkout -b命令来创立一个新的分支并切换到此分支中去,用git branch命令可查看以后所处分支:
$ git checkout -b gitTestBranch Switched to a new branch 'gitTestBranch' $ git branch * gitTestBranch master
1.2) 将readme.txt文件最初一行退出如下内容并commit
I am a test engineer. I want to study Git. branch gitTestBranch update
编辑
1.3) push到近程仓库并查看分支,首次push须要用git push -u 或git push --set-upstream 命令设置上下游的关联关系:
编辑
在GitHub上查看master分支和gitTestBranch分支的比照,可见gitTestBranch已胜利push:master:
编辑
gitTestBranch:
编辑
1.4) 应用git log --graph --all --decorate=short命令能够查看提交的分支走向,如果分支较多的话就会呈现如下成果:
编辑
1.5)这个时候咱们能够通过pr对分支进行merge:发动pr
编辑
没有conflict,能够间接merge
编辑
这个时候再看master分支,就曾经被胜利合并了
编辑
2.1) 先在readme.txt文件中退出一行branch gitTestBranch update2,而后提交到近程分支中:
I am a test engineer. I want to study Git. branch gitTestBranch update1 branch gitTestBranch update2 git commit -a -m "gitTestBranch second update" git push
编辑
2.2)通过fetch将gitTestBranch分支拿下来到本地,批改本地文件并合并批改本地gitTestBranch分支,批改退出“branch gitTestBranch update3”并提交到近程分支
vi readme.txt I am a test engineer. I want to study Git. branch gitTestBranch update1 branch gitTestBranch update2 branch gitTestBranch update3 $ git commit -a -m "third update" $ git push
2.3)master分支上fetch拿取近程gitTestBranch分支,批改抵触,合并提交
$ git checkout master $ git fetch origin gitTestBranch $ git merge origin/gitTestBranch # fix conflict $ git commit -a -m "fix conflict" $ git push
2.4)这时候在GitHub上进行查看:commit历史中可见提交记录:
编辑
查看master,发现曾经被胜利合并
编辑