9

我正在将一个 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 文件非常困难。

4

3 回答 3

1

查看“git log”如何显示分支被合并到主干中,而 gitk 显示主干被合并到分支中。

这是因为 gitk 可以自由地重新排序父母——就像许多其他工具一样。最左边的父母并不总是第一个父母。工具经常把父母放在任何有空间的地方。它最终提供了更丰富的视图。相比:

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

于 2010-12-23T02:18:26.600 回答
1

在玩了不同的 GUI 之后,这种行为似乎真的是依赖于工具的。可悲的是,其中没有多少是可配置的......

与一切都适合的优化视图相比,我更喜欢查看实际发生的事情的树视图......

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

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

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

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

于 2010-12-23T15:24:06.100 回答
-1

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

于 2010-12-24T23:10:51.020 回答