美文网首页
一个常见的git问题:多人协作时如何安全地撤销一次分支合并

一个常见的git问题:多人协作时如何安全地撤销一次分支合并

作者: Aragorn_Hope | 来源:发表于2018-01-22 20:13 被阅读0次

这是一个在实际工作中遇到的case,感觉具有一定的普适性,写下来分享一下。

在多人协作中,我们的项目的git分支通常是这样的:每个人有各自的开发分支,开发测试完成后,会合并到master分支进行上线。下图中,A和B的开发分支分别为deva和devb,项目的主分支为Master.



在一次开发中,A开发完成后,将自己的开发分支deva分支合并到master,这次合并被记为Master-3. B有一个良好习惯,就是定时合并master分支,B在A之后将master分支合并到了自己的开发分支。这样,B的开发分支上也有A的开发代码了。此后,B继续进行了一系列的开发,两次提交被记为devb-4和devb-5。如下图所示:


之后,A发现自己的开发代码有问题,于是撤销了向master分支的合并Master-3. 但此时,B已经将Master-3同步到了自己的开发分支。如下图所示。


那么,在这种情况下在B的开发分支上该如何有效地撤销呢?

我们想要达成的结果是这样的:在B的开发分支上撤销从Master-3向B的合并,同时保留B自己的两次提交devb-4和devb-5的开发代码.

可以在B的开发分支上通过下面的几步操作来完成:

1.git reset devb-3

2.git stash

3.git reset --hard devb-2

4.git stash pop

5.git commit & push

解释一下这几步的操作。第1步之后,devb-4和devb-5的两次提交就不存在了,但这两次提交的代码却能保留在git的工作区中。通过第2步的stash操作,可以将工作区中的代码暂存起来,即暂存了devb-4和devb-5的开发代码。第3步操作通过reset --hard,可以将分支回退到devb-2,同时不会在工作区保留devb-3分支的代码,这样就完成了撤销合并的操作。 第4步和第5步,将暂存起来的devb-4和devb-5 取出来并提交,即保留了devb-4和devb-5的开发代码。完成操作后的git分支如下图所示:


相关文章

  • 一个常见的git问题:多人协作时如何安全地撤销一次分支合并

    这是一个在实际工作中遇到的case,感觉具有一定的普适性,写下来分享一下。 在多人协作中,我们的项目的git分支通...

  • Git 命令

    将目录转化为Git仓库 添加文件到Git仓库 查看状态 版本回退 撤销修改 远程仓库 分支 多人协作

  • 分支管理

    分支管理,便于多人协作,各自在分支中工作,互不影响。分支管理包含对分支的增、删、改、查、切换及合并等。Git 默认...

  • idea git 合并分支

    idea git 合并分支idea如何在git上将分支代码合并到主干

  • 开发技巧

    git 使用 本地分支提交到远程分支 合并其他分支的内容某个分支 暂存修改 还原修改内容(即撤销所有修改) 修改....

  • v2.5.16子分支怎么提交融合主分支

    遇见的子分支与主分支合并的问题1.1 当主分支合并的时候 需要在提交一次 git add .1.2 ...

  • 分支管理

    本节内容: 创建与合并分支 解决冲突 分支管理策略 bug分支 Feature分支 多人协作

  • git的一些基本命令

    多人合作git的一些基本命令 解决分支冲突 git撤销 在没有add之前撤销:git checkout

  • git合并分支和提交步骤

    git 合并分支和提交的步骤 Git 问题 :一个 master, 多个新功能分支, 怎样有序地合并和提交(ht...

  • git解决代码冲突

    push: 本地分支合并到远程分支 pull: 远程分支合并到本地分支 git在合并时,两个分支修改了同一个文件的...

网友评论

      本文标题:一个常见的git问题:多人协作时如何安全地撤销一次分支合并

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