美文网首页资源精选
git基本使用--分支和合并

git基本使用--分支和合并

作者: 彬_仔 | 来源:发表于2016-10-17 15:19 被阅读57次

众所周知,Git的分支是其广受欢迎的的重要原因之一,版本的分支(branch)和合并(merge)可以很方便的对项目进行模块开发。接下来将通过一个小Demo来记录一下自己对于Git分支和合并的使用。

先讲一个需求,项目demo是一个已发布的项目,在远程仓库中发布的分支为master分支,在项目运行过程中出现了两个问题。第一,demo项目出现了一个小BUG;第二,需要扩展一个新功能。这两个问题需要两个程序员(小李修改Bug,小王添加新功能)来单独完成,那么他们应该怎样去合理的使用Git的分支和合并来完成工作呢?

clone项目到本地

小李和小王都将远程仓库的项目通过$ git clone demo命令克隆到本地仓库。接下来我们想一下,我们是不是要保证项目master的分支不能被修改,还得保证两个人单独完成工作且相互不能影响,最后两个人完成各自任务后提交项目,并能很好的合并呢?要想完成这样的目的就需要借助Git的分支和合并的概念来完成这个需求了。

新建分支

将项目clone到本地以后,小王和小李可以在他们的本地仓库进行新建分支,新建的分支相当于从master分支重新复制一份出来进行各自的操作(但实际并没有复制,是指针的变化)


git checkout

Git代码解释

    // 列出所有本地分支
    $ git branch

    // 列出所有远程分支
    $ git branch -r

    // 列出所有本地分支和远程分支
    $ git branch -a

    // 新建一个分支,但依然停留在当前分支
    $ git branch [branch-name]

    // 新建一个分支,并切换到该分支
    $ git checkout -b [branch]

    // 新建一个分支,指向指定commit
    $ git branch [branch] [commit]

    // 新建一个分支,与指定的远程分支建立追踪关系
    $ git branch --track [branch] [remote-branch]

    // 切换到指定分支,并更新工作区
    $ git checkout [branch-name]

    // 切换到上一个分支
    $ git checkout -

    // 建立追踪关系,在现有分支与指定的远程分支之间
    $ git branch --set-upstream [branch] [remote-branch]

    // 合并指定分支到当前分支
    $ git merge [branch]

    // 选择一个commit,合并进当前分支
    $ git cherry-pick [commit]

    // 删除分支
    $ git branch -d [branch-name]

    // 删除远程分支
    $ git push origin --delete [branch-name]
    $ git branch -dr [remote/branch]

就这样小李和小王各自建立一个分支开始了辛勤的创造。
由于小李只是修改一个bug,多以很快小李就完成了自己的工作,于是他将自己的分支提交到远程仓库中,并且请测试人员去测试。

提交分支到远程仓库

小李完成里本地代码的工作,准备提交代码到远程仓库。但是,此时远程仓库中的master分支可能已经被其他程序员修改了(比如小王提前完成了任务并通过测试已上线,我手动修改了一下远程仓库的master分支的一个文件来模拟这个过程),所以小李需要将远程仓库的mater分支与他自己的分支进行一下合并,以保证他的分支是最新的。

小李合并分支

首先小李将自己的分支切换到master分支,并通过$ git pull来从远程仓库获取master的最新内容,然后在切回自己的工作分支,执行$ git merge master将自己的工作分支和最新的master分支进行合并。

git merge

小李提交分支

然后小李将自己的分支提交到远程仓库


git merge

至此,小李的工作就基本完成了,如果测试通过的话,才算真正完成。

测试人员合并分支并发布

测试人员从远程仓库中clone下小李提交的的工作分支,然后进行测试,经过测试后,测试人员将小李的工作分支和master的工作分支进行合并(注意:小李操作的是他的工作分支和master合并,改变的是他的工作分支;而测试人员操作的是maste分支和小李的工作分支,改变的是master分支),然后可以选择删除小李的工作分支(也可以不删除),最终上线项目。


git merge
git merge

删除小李的工作分支


git merge
这样小李的工作彻底完成了,接下来咱们在看一下小王的工作情况。

小王经过一段时间的拼搏挣扎之后,新功能也完成了,他要做的也是想小李一下提交分支并请测试人员测试,然后再由测试人员合并分支并发布项目,过程和上面一样,下图为模拟流程。
小王的工作:

git merge
git merge
测试人员的工作:
git merge
git merge

总结

本文通过小李和小王以及测试人员对一个需求的实际场景进行了模拟Git的分支和合并的操作,其中截图部分代码在实际操作中可能不尽相同,但整个流程就是这样。

本文部分解释和说法借鉴自阮一峰关于Git的博文。
阮一峰关于Git的文章

Git使用规范流程
常用Git命令清单
Git分支管理策略
Git远程操作详解
Git工作流程

廖雪峰的Git教程

Git教程

相关文章

  • git强制合并分支

    git A分支合并B分支,并强制使用B分支代码(不手动解决冲突) git A分支合并B分支,并强制使用A分支代...

  • Git 分支管理

    Git鼓励大量使用分支: 创建与合并分支 :查看分支:git branch创建分支:git branch

  • Git的分支(Branch)

    Git鼓励大量使用分支:因为创建、合并和删除分支非常快,所以Git鼓励你使用分支完成某个任务,合并后再删掉分支,这...

  • git 基本操作及使用指南(简单易用)

    git 基本操作 1.创建本地分支 2.查看分支 3. 合并分支 Git告诉我们,这次合并是“快进模式”,也就是直...

  • Git

    git命令合并分支代码 对于复杂的系统,我们可能要开好几个分支来开发,那么怎样使用git合并分支呢? 合并步骤:1...

  • Git 14合并分支

    合并分支 ========= 命令 git merge [name] 合并分支 分支名称 git branch -...

  • git常用操作

    git从已有的分支创建新的分支 git切换新的分支 git如何取消merge 当我们使用git merge操作合并...

  • Git merge 和 Git rebase 区别

    git merge 和 git rebase 均具有合并分支的效果,但合并分支的机理不同 Git merge gi...

  • git branch 分支与合并

    在使用 git 进行分支开发与合并的时候需要用到这些命令。其他基本 git 命令参考 Git 简易食用指南 git...

  • git基本使用--分支和合并

    众所周知,Git的分支是其广受欢迎的的重要原因之一,版本的分支(branch)和合并(merge)可以很方便的对项...

网友评论

    本文标题:git基本使用--分支和合并

    本文链接:https://www.haomeiwen.com/subject/wtxzyttx.html