为什么git pull的行为与工作副本更改有关?

时间:2014-12-18 11:51:46

标签: git

我想将更改添加到我的工作副本中,但是git不会让我,我得到与this question相同的错误:

Cannot rebase: Your index contains uncommitted changes.
Please commit or stash them.

我知道我可以提交然后合并,或者存储 - 然后拉 - 然后应用存储,但之前拉动会将更改合并到我的工作副本中,保留我的本地更改。它是无缝的,任何冲突都会标记为我在我的工作副本中解决,就像合并提交的更改一样。我发现这很方便,为什么这个行为改变了?我怎样才能让git再次表现得那样?

2 个答案:

答案 0 :(得分:2)

  

无法改变

这意味着你不只是拉扯。你正在做pull --rebase (或者,当Zeeker提及in the comments时,您已将git配置为始终执行pull --rebase,例如通过git config pull.rebase true

如果您想自动隐藏(并重新申请)正在进行的工作,您可以检查是否适用(Git 2.0.1 +,2014年7月)a:

git config rebase.autostash true

点击“Git - How to edit old (not previous) commit with some of the unstaged changes from current index (current state)?

查看详情

答案 1 :(得分:2)

您似乎已将git配置为始终执行git pull --rebase。有多种配置会导致此行为。我将引用documentation

  

如果您想让git pull始终使用--rebase而不是合并,请参阅git-config中的pull.rebasebranch.<name>.rebasebranch.autosetuprebase

如果你希望git合并你的更改,而不是在你拉动时重新定义它们,你必须找到罪魁祸首配置并禁用它。

如果全局启用pull.rebase配置,例如您可以使用以下命令禁用它:

git config  --global --unset pull.rebase