我已经尝试了一些建议的东西,但似乎没有任何东西可以删除它。当我升级到 Mountain Lion OS X 时,这开始发生。每当我执行 . 时git pull
,它都会显示这个令人讨厌的空编辑器,标题为 MERGE_MSG。
如何防止它在我的所有应用程序中全局弹出?
您可以传递--no-edit
给git pull
,也可以将环境变量设置GIT_MERGE_AUTOEDIT
为no
.
从git pull
文档中:
--edit, --no-edit
Invoke an editor before committing successful mechanical merge to
further edit the auto-generated merge message, so that the user can
explain and justify the merge. The --no-edit option can be used to
accept the auto-generated message (this is generally discouraged).
The --edit option is still useful if you are giving a draft message
with the -m option from the command line and want to edit it in the
editor.
Older scripts may depend on the historical behaviour of not
allowing the user to edit the merge log message. They will see an
editor opened when they run git merge. To make it easier to adjust
such scripts to the updated behaviour, the environment variable
GIT_MERGE_AUTOEDIT can be set to no at the beginning of them.
Git 在这里创建一个合并提交,并希望您在提交消息中添加一些单词。
为什么要合并?Agit pull
是 agit fetch
后跟 a git merge
。后者可能会导致尝试创建合并提交,这似乎发生在您身上。
有几种方法可以避免这种情况。我建议让git pull
触发变基而不是合并。这避免了额外的合并提交及其消息。它还有助于保持历史线性。Agit pull --rebase
一次性完成此操作(即,它git fetch
后面跟着 a git rebase
)。
我将其永久配置为:
git config --global pull.rebase true
将远程分支合并到本地提供更多控制然后拉。合并可以是“快进”(不需要合并消息),合并消息可以是有意义的。Pull 不会为您提供“快进”选项,并且始终会生成不鼓励的默认合并消息。
Git 2.34(2021 年第四季度)提供了更具弹性的体验,允许.git/MERGE_MSG
在两种极端情况下自动删除。:
之前,在 " git rebase
" ( man )中的最后一个冲突步骤中检查 HEAD 中的所有路径并继续会导致跳过该步骤(这是预期的),但会留下MERGE_MSG
文件$GIT_DIR
并混淆下一个 " git commit
" ( man ),已通过 Git 2.34(2021 年第四季度)更正。
请参阅Phillip Wood ( )的commit e5ee33e、commit bed9b4e、commit 118ee5c(2021 年 8 月 12 日) 。(由Junio C Hamano 合并 -- --在0ba5a0b 提交中,2021 年 9 月 3 日)phillipwood
gitster
rebase --continue
: 消除.git/MERGE_MSG
报告人:Victor Gambier
签字人:Phillip Wood
审核人:Elijah Newren
如果用户通过删除索引和工作树中的所有更改来跳过最终提交,则使用 '
git restore
' ( man ) (或 read-tree) 然后运行 'git rebase --continue
' ( man ).git/MERGE_MSG
将被留下。
这将在用户下次提交时播种提交消息,这不是我们想要发生的。
还有(仍然是 Git 2.34):
请参阅Phillip Wood ( )的提交 f2563c9、提交 baf8ec8、提交 0c164ae、提交 2be6b6f(2021 年 8 月 20 日) 。(由Junio C Hamano 合并 -- --在提交 9135259中,2021 年 9 月 3 日)phillipwood
gitster
rebase -r
: 快进时不要写 .git/MERGE_MSG报告人:SZEDER Gábor
签字人:Phillip Wood
当快速转发时,我们不会创建新的提交,因此
.git/MERGE_MSG
不会被删除,并且最终会在变基完成后播种提交的消息。
通过在快进检查之后写入文件来避免.git/MERGE_MSG
在我们快进时写入。
请注意,快进代码没有变化,只是移动了。请注意,这种更改的实现方式意味着我们在快进时也不再编写作者脚本。
我相信这是安全的,原因如下,但这与我们在快速转发非合并提交时所做的不同。
如果我们改写合并,那么 'git commit --amend
' ( man )将保留我们正在改写的提交的作者身份,因为它会忽略GIT_AUTHOR_*
,除非--reset-author
通过。
它还将正确的GIT_AUTHOR_*
变量导出到任何钩子,并且我们已经测试了改写提交的作者身份。
如果我们不重新措辞,那么我们不再调用spilt_ident()
,这意味着我们不再检查提交作者标题是否正常。
然而,这是我们在快速转发非合并提交时已经做的事情,skip_unnecessary_picks()
所以我认为我们不在这里检查作者并没有违反任何承诺。