【问题标题】:Why git asks to enter a commit message to explain why this merge is necessary为什么 git 要求输入一个提交消息来解释为什么这个合并是必要的
【发布时间】:2016-07-24 22:36:59
【问题描述】:

我在本地分支上进行了 1 次提交,然后为了将远程分支中的更改带到本地,我在本地分支上做了一个 git pull,令我惊讶的是 git 这么说。

# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.

我知道我在 vi 编辑器中。

我的问题是 为什么 git 要求我输入消息。我以前从来没有遇到过。

我的git版本是:version 1.9.5-preview20141217

我提到了this 的问题,但我仍然觉得很难理解。 谢谢。

【问题讨论】:

  • 您使用的是哪个版本的 GIT?
  • 版本 1.9.5-preview20141217
  • 更新了我的答案,解释了 Git 为何这样做。请让我知道您的想法或我的假设是否错误。

标签: git git-pull


【解决方案1】:

来自Git Documentation

将来自远程存储库的更改合并到当前分支中。在其默认模式下,git pull 是 git fetch 后跟 git merge FETCH_HEAD 的简写

关于您的问题:为什么

  1. Git 为什么要创建 MERGE 提交:这是 git pull 的默认行为。互联网上有很多关于这种行为的解释,this 很好地解释了它。
  2. 为什么 Git 现在要求提交消息:我想到了三个可能的选项:
    • 你更新了你的 git 客户端
    • 您之前从未有一个本地分支在远程之前
    • 您的 git 配置最近已更改

如何避免这种情况:

由于您的本地存储库提前 1 次提交,git 尝试将您的远程合并到您的本地存储库。这可以通过合并来处理,但在您的情况下,也许您正在寻找变基,即将您的提交添加到顶部。您可以使用

git rebasegit pull --rebase

如果这确实是您正在寻找的行为,您可以设置您的 git 配置以使 rebase 成为您的 git pull 的默认选项

全局设置:

git config branch.autosetuprebase always # Force all new branches to automatically use rebase

或者你可以设置每个分支:

git config branch.*branch-name*.rebase true # Force existing branches to use rebase.

【讨论】:

    猜你喜欢
    • 2020-12-13
    • 1970-01-01
    • 2015-06-11
    • 2018-07-12
    • 2017-12-15
    • 2021-10-17
    • 1970-01-01
    • 2018-09-16
    相关资源
    最近更新 更多