Git Rebase远程origin/master冲突,本地master无冲突原因求解
问题原因分析
核心差异在于本地
master分支与**远程缓存分支origin/master**的状态不同:- 第一种流程中,
git fetch仅将远程master的更新拉取到本地的origin/master缓存分支,但你的本地master分支并未同步该更新(或本地master存在未推送到远程的自有提交)。此时将develop变基到origin/master,相当于把develop基于本地master开发的提交,强行应用到远程master的版本上,这些提交与远程master的新内容必然产生大量冲突。 - 第二种流程中,
git checkout master && git pull origin HEAD先完成了本地master与远程的同步:pull是git fetch + git merge的组合操作,会先拉取远程更新,再自动将远程master的内容合并到本地master(若有本地提交则生成合并提交,无本地提交则直接快进)。此时本地master已包含远程更新与本地自有提交的完整内容,而develop本身就是基于本地master开发的,变基时仅需将develop独有的提交应用到这个最新本地master上,因此不会产生冲突。
- 第一种流程中,
你忽略的关键细节:
git fetch不会修改任何本地分支,仅更新远程分支的本地缓存(以origin/*开头的分支);而git pull会直接将当前本地分支更新至远程对应分支的最新状态。- 你实际需要的是将
develop变基到包含所有本地修改的本地master分支,而非仅对应远程服务器版本的origin/master。
内容的提问来源于stack exchange,提问作者Majesty
相关产品推荐
相关产品推荐

