gitk:奇怪的历史树

时间:2010-12-22 16:40:45

标签: git gitk

我正在将一个svn repo移植到git(使用来自https://www.negativetwenty.net/redmine/projects/show/svn2git的svn2git)并且由于svn不跟踪合并,我需要手动编辑.git / info / grafts。为此,我启动gitk,在提交消息中搜索术语“Merge”,验证合并提交是否具有正确的祖先并依次填充.git / info / grafts。

我遇到的问题是gitk似乎与“master”分支混淆了。它经常显示主人从一个分支“分叉”并被合并成一个分支后跟,而实际上恰恰相反。

为什么它无法理解master应该尽可能“线性”并且它应该是从它分叉的分支,而不是相反?这是一个gitk问题还是git repo的历史不完整?似乎“git log --pretty = oneline --graph”能够显示正确的行为,所以我认为它可能是一个gitk问题。

我也尝试过咯咯和qgit,但两者都有问题。我发现giggle的树很难理解(例如,合并是水平的,而在qgit和gitk中它们是倾斜的......)qgit似乎没有显示一些提交(在svn中创建分支的提交在两者中都显示为git提交“git log --pretty = oneline --graph”和gitk,但不是qgit也不是咯咯笑。)

请注意,我在测试中使用“gitk --all”。

所以我的问题是: - 如何强制gitk将master显示为尽可能线性?理想情况下,“左对齐”,分支从它分叉,而不是相反。 “git log --pretty = oneline --graph”似乎正在以正确的方式进行,但是gitk呢?

谢谢!

编辑:截图链接已经死亡。以前说过:

  

我上传了不同工具的屏幕截图:    git log,gitk,giggle,qgit

     

看看“git log”如何显示正在合并为trunk的分支,而gitk   显示树干在分支中合并。 Giggle和qgit显示正确   合并,但他们经常删除一些提交(创建分支),所以它是   真的很难手动编辑.git / info / grafts文件。

3 个答案:

答案 0 :(得分:1)

使用不同的GUI后,行为似乎与工具有关。可悲的是,其中很多都不是可配置的......

我更喜欢树形视图,显示实际发生的事情与优化视图相比,其中一切都适合......

我已经选择了“gitg”(http://trac.novowork.com/gitg/)。看起来相对活跃,它完全符合我对历史视图的期望。主人是最左边的“车道”,分支从它分叉并从右边合并到它。我觉得这与我的工作流程一致。此外,我可以显示“非活动通道”,因此主屏幕始终显示在最左侧(在首选项窗口中启用/禁用)。 一个好处还是“以拓扑顺序显示历史”。选中后,gitg将尝试将提交放在一个分支上。如果未选中,它们将按时间顺序显示。

它也可以进行基本提交和暂存。

我能找到的唯一缺点是搜索:似乎我无法输入sha1sum并找到正确的提交。也许只是一个错误。

关于原始问题(可以按照我想要的方式配置gitk吗?)我仍然不确定它是否可行。可能是一个设计决定......

答案 1 :(得分:0)

  

查看“git log”如何显示正在合并到trunk的分支,而gitk显示trunk在分支中合并。

这是因为gitk可以自由地重新安排父母 - 正如许多其他工具一样。最左边的父母并不总是第一个父母。通常工具会把父母放在有空间的地方。它最终提供了更多的视图。比较:

我发现git-log的图形不是很符合人体工程学 - 它需要更多的空白行。

答案 2 :(得分:0)

如果你有一个github帐户,你也可以在那里尝试“Network”视图。