我使用多个分支,但我只修改其中一个(我将其称为
working
)。我希望能够获得 working
的最新信息,同时也获得我所有跟踪分支的最新信息。由于其他跟踪分支很少被修改,因此它们通常可以快进。
我希望 git-pull 可以做到这一点,但这并没有达到我想要的结果:
git checkout working
git pull --ff-only --all
我的本地
main
分支未修改:它仍然位于远程分支mine/main
后面。
我可以强制更新到main:
git br -f main mine/main
但我更喜欢自动的和更安全的东西,因此它只会在可以安全快进的情况下修改分支。然而,我实际上不想检查该分支,因为我没有积极地处理它,也不打算合并。
Can“git pull --all”更新我所有的本地分支吗?上有一堆脚本,但这个问题是关于内置于git中的解决方案。
git fetch
立即更新所有远程跟踪分支。当您执行此操作时,不会更新任何
local 分支,并且没有快捷方式可以执行此操作;你必须一次做一个。但您不必切换到每个分支来更新它;你可以留在原地,但要说
git fetch origin mybranch:mybranch
更新您目前不在的分支(但您仍然需要单独为每个分支执行此操作)。您使用该命令指定的本地分支将被更新,但前提是它可以快进。
Can
没有git pull --all
update my all localbranch? 上有一堆脚本,但这个问题是关于 git 中内置的解决方案。
您可能没有从这些答案中得到信息。他们告诉你的是 git 中
内置这样的解决方案;你必须编写脚本才能做到这一点。
相关但无帮助很有帮助。你可能不喜欢它告诉你的内容,但事实并不关心你喜欢什么——它告诉你的就是事实。同样,您可能没有收到消息。它
还有一点:您可能维护了太多的本地分支机构。我永远不会创建本地分支,除非我正在积极地在其上进行开发(或者除非我需要将另一个分支合并到其中,但这很少发生,因为合并是通过远程拉取请求完成的),并且我将本地分支删除为一旦合并。结果,我从来不拉。我只是时不时地git fetch
基于@matt给出的答案,简短的答案是否定的,Git中没有内置任何东西,但这是我最喜欢的答案,只涉及利用
git for-each-ref
命令创建一个简洁的别名:
(投票!:-D) 简而言之,在执行您最喜欢的“获取”命令(
git pull --ff-only
、git pull --rebase
、git fetch
等)后,您执行
git fetch . $(git for-each-ref --format='%(push):%(refname)' refs/heads --exclude="refs/heads/$(git rev-parse --abbrev-ref HEAD)")