编辑

相似于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,发现曾经被胜利合并


编辑