无参数git pull与git pull origin当前分支结果为何不同?应使用哪个拉取最新代码?
两个命令的差异原因
git pull 不带任何参数时,只会拉取当前分支预先绑定的上游分支的更新。如果你的本地master分支没有配置和远程origin/master的追踪关系,或者追踪的上游分支不是最新的目标源,就会出现拉取内容不全的情况,这也是你只拉到1个对象的核心原因。
而git pull origin master是显式指定从远程origin仓库拉取master分支的全量最新更新到当前本地分支,不受本地上游追踪配置的影响,所以会拉到所有远程最新的提交对象。
新建分支前获取最新master的正确方案
推荐用更可控的操作流程,避免自动合并带来的冲突问题:
- 先切换到本地master分支:
git checkout master - 拉取远程仓库所有最新更新,但不自动合并到本地:
git fetch origin - 强制将本地master分支同步到和远程origin/master完全一致的状态:
git reset --hard origin/master
如果你确定本地master分支没有未提交的改动,也可以直接使用git pull origin master,同样可以保证拿到远程最新的master代码。
注意:执行
git reset --hard origin/master会清空本地master分支上所有未提交的修改,操作前请确认没有需要保留的本地改动。
内容的提问来源于stack exchange,提问作者Luke Robinett
相关产品推荐
相关产品推荐

