2014-02-21 240 views
1

我正在跟踪使用git的svn仓库。合并在2014-01-09(生产承诺A)和2014-02-12(生产承诺B)上完成。当我git checkout master; git log,我看到提交的合并,但我也看到,例如,对一个分支(这是作为B的一部分合并)作出的2014-02-04(C)提交。git-svn - 为什么其他分支的提交混入主分区中提交?

为什么在主干上运行git log时,针对分支的提交会显示出来?

我发现这一点的同时尝试我的主人和树枝倒回到特定日期时间,试图再次执行合并B,看看存在哪些冲突。我假设我可以git checkout master; git reset --hard B^; git merge branch;,但那不起作用,然后我看到从我的干线日志分支这些额外的提交并感到困惑。

任何帮助你可以提供关于这个问题将非常感谢!

回答

2

如果C是被合并到master分支产生B的一部分,然后在master一个git log将包括上分支中的所有提交,包括C。这是预期的行为,并且需要理解作为master的一部分的所有单独提交。可能有一个标记git log来隐藏也出现在不同分支中的提交,但我找不到这样的机制。

+0

'--first-parent',它不跟踪仅通过合并另一个分支到当前分支中的提交。尽管如此,这并不完美,因为git基本上没有一个提交的分支的概念。 – Eevee

+0

啊,谢谢!我没有意识到git-svn太聪明了。我很久以前就注意到,当我'git svn clone'ed,'git log --oneline --graph'没有正确地跟踪分支。 “好吧,”我说,“总比没有好。”我没有意识到后来的'git svn rebase'等等,*不能正确地追踪分支!感谢你的回答! –

+0

我原本以为你的意思是合并发生在'git'方面,当我意识到你的意思是发生在'svn'方面时,我开始猜测我的答案。我找不到任何提供明确答案的参考资料。看起来'git'必须非常聪明才能将'svn'合并翻译成'git'合并,因为它们是非常不同的概念。但我无法弄清楚还会发生什么。 – patrickvacek