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