Git如何无需先检出过时版本,直接拉取并切换到最新远程分支
结论
你给出的两条命令完全可以实现需求,不需要额外执行git pull操作。
原理说明
- 执行
git fetch origin master时,Git会在不切换当前工作分支(你仍停留在feature1分支)的前提下,将远程origin仓库master分支的最新提交同步到本地的远程跟踪分支origin/master,这一步不会修改你本地现存的master分支内容,也不会影响当前工作区的代码。 - 因为你已满足「本地master分支没有未推送的提交」的前提条件,当执行
git checkout master切换分支时,Git会自动检测到本地master分支落后于已更新的origin/master,直接执行快进合并,将本地master分支更新到和远程最新版本完全一致的状态。
更简化的操作方案
如果想省去切换分支后的自动合并步骤,也可以直接执行以下命令,在不切换当前分支的前提下直接把本地master分支更新到远程最新版,后续随时切换即可拿到最新代码:
git fetch origin master:master
注意:该命令仅在本地master分支没有未推送提交的场景下可正常运行,刚好匹配你给出的已知条件。
原常规操作的问题
你之前常用的先git checkout anotherbranch再git pull的操作,会先将本地过时的分支版本加载到工作区,再执行拉取合并,不仅多了一步加载旧版本的过程,极端情况下如果存在未处理的文件冲突还会阻塞操作,使用先fetch的方案可以完全规避这类问题。
内容的提问来源于stack exchange,提问作者Liero
相关产品推荐
相关产品推荐

