Git Refresh Merge将两个分支指向最近的提交

时间:2014-04-24 16:56:39

标签: git merge bitbucket

我的团队正在使用Bitbucket和msgsgit'和Eclipse的git插件在Windows中管理git repo。我们通常有一个主要和2或3个功能分支,可以相互依赖。我们遇到了一个案例,在我们刷新了特征-2'来自' feature-1'两者都是' feature-1'和'功能-2'指向合并的提交。这会污染'功能-1'提交不应该在' feature-1'中。请参阅下图。

feature-1   --0--1--\--2--3--4--\
                     \ create    \ refresh
feature-2             \--5--6--7--\---

'特征-1'存在。 '特征-2'是在' feature-1'正在努力。合并是从' feature-1'完成的。到'功能-2'。

git checkout feature-2
git merge feature-1
git push

现在' feature-1'和'功能-2'指向相同的提交哈希和' feature-1'包含来自' feature-2'的提交。

有时,此工作流程的行为与我期望的一样,其中' feature-2'包含来自' feature-1'的所有提交。和' feature-1'保持自己的头脑。偶尔,我们会体验到我所报告的内容。

有没有人知道发生了什么?我觉得我错过了一些基本的概念。

1 个答案:

答案 0 :(得分:1)

这是唯一的方式:

git checkout feature-2
git merge feature-1
如果feature-1没有任何提交,那么

将以feature-2feature-2指向相同的提交,因为它已分支feature-1或自上次合并以来 - 这将导致快进合并,只是将feature-2的指针移动到指向与feature-1相同的提交。即使是这种情况,未来对两个分支的提交也会再次分歧,因为它们仍然是单独的指针,即使它们在一段时间内指向同一个东西。

完成合并后,合并到分支(在这种情况下为feature-2)似乎将所有feature-1提交到其历史记录中的合并点是正常的 - 这就是你想要的。 feature-1不应显示feature-2的提交,除非有人无意中进行了相反的合并(例如git checkout feature-1; git merge feature-2)。您应该能够使用gitk --all可视化进展情况。