我的团队正在使用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'保持自己的头脑。偶尔,我们会体验到我所报告的内容。
有没有人知道发生了什么?我觉得我错过了一些基本的概念。
答案 0 :(得分:1)
这是唯一的方式:
git checkout feature-2
git merge feature-1
如果feature-1
没有任何提交,那么将以feature-2
和feature-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
可视化进展情况。