2

我们使用 Github Desktop(以前的 Github for Windows)作为我们的 Git 客户端。我们经常遇到以下情况:

开发人员 A 提交了一堆带有可爱的解释性消息的更新。开发人员 B 一直在同一个分支中工作,并在之后提交了一条消息。

开发人员 B 的提交信息显示在 git 日志中,然后,我们从开发人员 B 获得合并提交,并自动显示“合并分支 ...”消息。合并提交包含开发人员 A 的所有更改,但开发人员 A 的可爱消息消失了。这种行为似乎发生了一些变化——过去很少发生,现在似乎一直在发生。

(很难找到关于 Github Desktop 中的“同步”按钮正在做什么的最新信息,确切地说,但我确实找到了一个参考,表明它曾经这样做git pull --rebase,然后改变了。这似乎符合以下事实这个合并提交问题比以前严重得多。)

所以我的问题是:有什么办法可以防止开发者 A 的提交信息丢失?

编辑添加:似乎问题有两个方面:1)我们的开发人员并不总是在提交之前进行拉取,从而导致合并提交。原始提交不会丢失,但不可见。2) Github Desktop 显示日志的方式是显示合并提交,但不显示原始提交。这是我从 Github 桌面团队收到的电子邮件中的评论:

进一步深入研究,看起来确实由于我们在 GitHub Desktop 中显示历史记录时使用的 --first-parent 标志而隐藏了提交。目前没有办法改变这种行为。

以下是 GitHub Desktop 的开发人员分享的我们这样做的一些原因:

“GitHub Desktop 针对 GitHub Flow 进行了优化。在这个模型中,合并几乎总是代表(1)通过拉取请求将分支合并到默认分支中,或者(2)从默认分支更新分支。

在第一种情况下,最有用的是查看哪些拉取请求已被合并——而不是构成该拉取请求的单个提交。我们认为拉取请求非常棒,并且对于理解历史非常有用,因此我们希望优先考虑它们。

在第二种情况下,看到合并中的提交只会掩盖分支上的更改。查看分支独有的提交是最有用的。”

我们最终觉得 Github Desktop 可能不适合我们——我个人已经切换到 GitKraken,而且我们中的很多人更多地使用命令行。

4

2 回答 2

2

Git合并不应该那样。如果您无法确定您的 Git GUI 正在执行哪些命令(合并、变基、压缩...),我建议您git merge使用命令行来执行,这样您就可以控制发生的事情。

由于大多数图形化 Git 客户端带来的晦涩和词汇混乱,我倾向于提倡命令行 Git。

于 2016-03-24T13:51:40.427 回答
1

开发人员 A 的提交消息可能不会丢失。这是 Github 桌面应用程序显示提交的方式。

您可以通过运行检查您是否真的丢失了提交git log --graph

如果您想要一个显示合并提交的客户端,您可以使用SourceTreeTortoiseGit

有关更多详细信息,请参阅此答案此问题

于 2016-06-03T11:28:44.623 回答