如何让 Git 拉取所有分支的更改

10

我正在使用一个Git仓库,该仓库的主分支为空,有多个分支。当我执行git pull命令时,它似乎只会拉取主分支的内容,而不会应用于其他分支。

我发现自己需要在每个分支上执行git checkout branch; git pull才能推送。是否有一个命令或开关可以使用,以此 Pull 并应用所有分支和主分支的更改?


当你执行pull操作时,它会将所有分支都拉取到本地副本中(remotes/origin/...下的内容),因此你实际上不需要每次都运行 'git pull',只需切换分支并执行 git merge origin/branch 即可。 - ebneter
可能是重复的问题:Can "git pull --all" update all my local branches? - Chronial
2个回答

7

我认为没有可用的命令或开关,因为git pull所做的是从远程获取更改(如git fetch),然后将更改合并到您当前的分支(git merge origin/master或其他您当前分支跟踪的分支)。问题不在于第一部分(实际上,git fetch会获取所有远程分支的更改),而在于合并 - 当您有合并冲突时应该怎么办?您只能在工作副本上进行合并,而不能在git对象上进行合并。当您开始合并时,您需要中止它或解决所有冲突并创建合并提交。


+1。当然,编写一个脚本来完成这个任务是非常简单的。 - ebneter

4

你的问题不在于 git pull,而是在于 git push。尝试设置 git 只推送到当前分支正在跟踪的分支(如果适用):

git config --global push.default tracking

同时,你可以随时推送,但如果分支无法快进,你会收到拒绝通知。这些通常是你不太关心的分支。

上述配置将在未指定要推送什么内容时提供更加明智的行为。


好的!我不知道 push.default 配置选项。git-push 的手册页面提供了一种类似但另外的解决方案:git config remote.origin.push HEAD。 - Bobby Eickhoff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接