Git技术疑问:从远程仓库拉取代码后是否必须执行提交?
关于Git拉取后切换分支的问题解答
首先得明确:正常无冲突的拉取操作后,你根本不需要手动提交,就能直接切换分支。出现需要提交/暂存的提示,肯定是拉取过程中触发了合并冲突,导致本地分支处于未完成的合并状态。
具体两种情况分析:
拉取无冲突:
默认git pull是git fetch加git merge,如果远程分支和本地分支没有冲突,Git会自动创建一个合并提交(或者用git pull --rebase的话,会把本地提交变基到远程提交之上,也不需要手动提交)。这时候本地分支已经和远程同步,切换分支完全没问题,不需要额外提交。拉取有冲突:
当远程和本地的同一文件有不同修改时,Git会暂停合并,把冲突文件标记出来。这时候本地分支处于“合并中”的特殊状态,Git不允许你直接切换分支——因为未解决的冲突会污染其他分支。这时候你有两个选择,都不需要“额外提交拉取操作”:- 解决冲突后,执行
git commit提交合并结果(这个提交是合并后的代码状态,不是记录拉取); - 直接放弃这次合并,执行
git merge --abort(如果是用merge拉取)或者git rebase --abort(如果是用rebase拉取),回到拉取前的状态,这时候也不需要提交,就能正常切换分支。
- 解决冲突后,执行
总结:
拉取后不是必须提交,只有出现冲突且选择解决冲突时才需要提交合并结果;如果不想提交,放弃合并就能回到可切换分支的状态。
内容的提问来源于stack exchange,提问作者gkeenley
相关产品推荐
相关产品推荐

