1

我有两个开发人员同时工作,一个在 master (dev1) 上,一个在另一个分支 (dev2) 上。主人被视为“主线”。Dev1 定期合并来自 dev2 分支的更改,如下所示:

git checkout master
git merge origin/branch1
git push origin master 

这会将分支与 master 合并以进行部署,但 dev2 还希望在合并完成后从 master 获取最新更改。我认为这是最好的方法:

git checkout branch1
git rebase master

这个对吗?

在 Github 中,我注意到他们正在处理的分支不再出现,也没有人删除它。我很确定 rebase 或 merge 不会删除分支,除非你告诉它。否则让我知道。

基本上,图表看起来像:

     b1  b2   b3 b4...
    /      \ /     \
   m1   m2  m3  m4  m5...

m3 和 m5 是 dev1 将分别合并 b2 和 b4 的地方。

4

3 回答 3

2

dev2仅当对未发布的提交进行变基时,变基才有效。

但是dev2rebased 提交已经推送到 origin (并且可能已经被合并dev1master),那么这不是正确的方法,因为 SHA1 已更改,并且branch1by的下一次合并dev1不仅会合并提交,还会合并所有提交,甚至那些已经合并了。

在这种特定情况下,需要dev2合并—— 这将避免那些问题。mastergit merge master

于 2013-01-31T20:58:25.047 回答
1

Github 不会显示合并的分支。
利用:

git branch --merged

列出所有合并的分支

你可以使用

git log --graph 

查看您的提交图以查看每个分支的合并位置

于 2013-01-31T19:14:03.793 回答
1

在对此进行了更多研究之后,我确实找到了一篇博客文章,该文章似乎完全涵盖了我最初在问题中提出的问题: http: //mettadore.com/analysis/a-simple-git-rebase-workflow-explained/。也就是说,不合并,而是将分支与主分支变基,反之亦然。主要区别在于您永远不会推送本地分支。

这种方法的主要原因是,它会将您的分支历史记录保留在主分支中,并防止出现“当多个人在一个分支上工作时,因为如果其他人在您拉动的同时拉动主分支进行合并怎么办?合并的主分支?”

我将此添加为另一种可能的选项,但如果有人发现博客中描述的内容有问题,我会很好奇。

于 2013-03-26T22:26:00.343 回答