git 有内置命令来 ffwd 所有跟踪分支吗?

问题描述 投票:0回答:2

我使用多个分支,但我只修改其中一个(我将其称为

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 pull 会更新所有跟踪的分支吗?

git git-pull fast-forward
2个回答
1
投票
你可以说

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
命令创建一个简洁的别名:


0
投票
https://stackoverflow.com/a/76267753/2812695

(投票!:-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)")

最初的答案建议创建一个 git 别名,但我创建了一个 bash 别名。任何一个都有效!
    

© www.soinside.com 2019 - 2024. All rights reserved.