git获取非快进更新

时间:2018-05-31 14:21:18

标签: git

我知道"总是在分支和远程跟踪之间进行快速合并,它从远程提取后提交。

我的问题涉及我们将要求git fetch进行非快进合并的情况。是否有可能使git fetch非快进合并? 如果没有,我将如何解决以下情况?

我的本地仓库(进行了2次本地提交 - C和B提交)

git fetch

之后我运行git fetch(更新我的分支)

...--o--o--A   <-- origin/master
            \
             C--B   <-- master 

这里,...--o--o--A-- D <-- origin/master (updated) \ C--B <-- master 需要在master中合并,但这不会快进。 origin/master将失败。我不想强制获取,因为我不想丢失我的提交git fetchC

如何进行git fetch以进行非快进合并。像这样:

B

1 个答案:

答案 0 :(得分:1)

  

这里,origin / master需要在master中合并,但这不会快进。 git fetch会失败。我不想强制获取,因为我不想丢失我的提交C和B。

这就是为什么你不应该使用git fetch来更新当前分支。将git pull与merge或rebase一起使用。具有

...--o--o--A   <-- origin/master
            \
             C--B   <-- master 

您运行git pull origin master并到达此处:

...--o--o--A-----D   <-- origin/master
            \     \
             C--B--M   <-- master 

git pull --rebase origin master你到达那里:

...--o--o--A--D   <-- origin/master
              \
              C'--B'   <-- master 

(Rebase将提交CB重写为CB)。

我更喜欢使用rebase,所以我有这个配置:

git config --global branch.autosetuprebase always

这使得git为每个新分支配置rebase。对于现有分支,更改为

git config branch.master.rebase true