我正在将一个 svn 存储库移植到 git(使用来自https://www.negativetwenty.net/redmine/projects/show/svn2git的 svn2git )并且由于 svn 不跟踪合并,我需要手动编辑 .git/info/grafts . 为此,我启动 gitk,在提交消息中搜索术语“Merge”,验证合并提交是否具有正确的祖先并相应地填充 .git/info/grafts。
我遇到的问题是 gitk 似乎与“master”分支混淆了。它经常显示 master 从一个分支“分叉”并被合并到一个分支后记中,而实际上恰恰相反。
为什么无法理解 master 应该尽可能“线性”并且应该从中分叉出分支,而不是相反?是 gitk 问题还是 git repo 的历史不完整?似乎“git log --pretty=oneline --graph”能够显示正确的行为,所以我认为这可能是一个 gitk 问题。
我也尝试过giggle 和qgit,但两者都有问题。我发现 giggle 的树很难理解(例如,合并是水平的,而在 qgit 和 gitk 中它们是倾斜的......)并且 qgit 似乎没有显示一些提交(在 svn 中创建分支的提交在两者中都显示为 git commit "git log --pretty=oneline --graph" 和 gitk,但不在 qgit 中也不傻笑)。
请注意,我在测试中使用“gitk --all”。
所以我的问题是:-如何强制 gitk 尽可能地显示 master 线性?理想情况下“左对齐”,分支从中分叉,而不是相反。"git log --pretty=oneline --graph" 似乎是正确的,但是 gitk 呢?
谢谢!
编辑:屏幕截图链接已失效。之前说过:
我已经上传了不同工具的截图:git log、gitk、giggle、qgit
查看“git log”如何显示分支被合并到主干中,而 gitk 显示主干被合并到分支中。Giggle 和 qgit 显示了正确的合并,但它们经常放弃一些提交(创建分支),因此手动编辑 .git/info/grafts 文件非常困难。