我知道"
总是在分支和远程跟踪之间进行快速合并,它从远程提取后提交。
我的问题涉及我们将要求git fetch
进行非快进合并的情况。是否有可能使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 fetch
和C
。
如何进行git fetch以进行非快进合并。像这样:
B
答案 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将提交C
和B
重写为C
和B
)。
我更喜欢使用rebase,所以我有这个配置:
git config --global branch.autosetuprebase always
这使得git为每个新分支配置rebase。对于现有分支,更改为
git config branch.master.rebase true