为何在本地main分支执行git fetch会拉取远程dev分支的变更?
Git Fetch 拉取所有远程分支变更的原因解析
首先明确git fetch的默认行为:不带任何参数执行git fetch时,Git会拉取你配置的远程仓库(默认是origin)下所有分支的最新提交,和你当前处于哪个本地分支、该分支追踪的是哪个远程分支没有关系。
回到你的场景:
- 你本地的
dev分支已经设置了上游为origin/dev,远程GitHub上的dev分支有新修改后,执行git fetch会同步整个origin仓库的所有分支数据,自然也包括origin/dev的最新变更,这就是为什么你看到远程dev的变更被拉取下来了。 - 而你觉得
git push逻辑符合预期,是因为git push的默认行为是:仅推送当前本地分支对应的上游远程分支(前提是该本地分支已经设置了上游追踪关系),和fetch的全量拉取逻辑完全不同。
如果想实现「只拉取当前分支追踪的远程分支变更」,可以指定分支名执行:
git fetch origin main
这样就只会同步origin/main的最新提交,不会涉及其他远程分支。
内容的提问来源于stack exchange,提问作者Eric Movsessian
相关产品推荐
相关产品推荐

