为什么git要求输入提交消息来解释为什么这种合并是必要的

时间:2016-04-05 06:29:52

标签: git git-pull

我在我的本地分支上有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问题,但我仍然觉得很难理解。 感谢。

1 个答案:

答案 0 :(得分:6)

来自Git Documentation

  

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

关于您的问题:为什么

  1. 为什么Git会创建MERGE提交:这是git pull的默认行为。在互联网上有很多关于这种行为的解释,this很好地解释了它。
  2. 为什么Git现在要求提交消息:我想到了三种可能的选择:
    • 您更新了git客户端
    • 之前,你从来没有一个超越遥控器的本地分支
    • 您的git配置最近已更改
  3. 如何避免这种情况:

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

    执行此操作

    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.