希望GIT alias或bash执行一系列的;git取回来源aaa:aaa“;命令

希望GIT alias或bash执行一系列的;git取回来源aaa:aaa“;命令,git,fetch,Git,Fetch,我有几个远程回购的本地克隆。在其中一个分支中工作时,我更新了一些分支并将其推到远程。然后我转到另一个不同的克隆,我想获取并更新缓存在另一个本地repo中的远程设备 我有一个程序,工作正常,但是手动的。这里有一个例子。 首先,在第一个本地克隆repo中,我对branch1、branch2和branch3进行了一些更改,然后推送。接下来,在同一个远程repo的另一个本地克隆中,我希望将远程的缓存副本更新,所以我这样做 $ git fetch ...says remote counting

我有几个远程回购的本地克隆。在其中一个分支中工作时,我更新了一些分支并将其推到远程。然后我转到另一个不同的克隆,我想获取并更新缓存在另一个本地repo中的远程设备

我有一个程序,工作正常,但是手动的。这里有一个例子。 首先,在第一个本地克隆repo中,我对branch1、branch2和branch3进行了一些更改,然后推送。接下来,在同一个远程repo的另一个本地克隆中,我希望将远程的缓存副本更新,所以我这样做

   $ git fetch
   ...says remote counting objects, unpacking etc then a series of lines like...
   eb7b3000..67f0ade3  mybranch1      -> origin/mybranch1
   eb7b3000..67f0ade3  mybranch2      -> origin/mybranch2
   eb7b3000..67f0ade3  mybranch3      -> origin/mybranch3
   ...and usually also some [new tag] lines
这标识了“第一个”本地回购已更新的分支,我继续逐个更新,如下所示

   $ git fetch origin mybranch1:mybranch1
   $ git fetch origin mybranch2:mybranch2
   $ git fetch origin mybranch3:mybranch3
这是一个有点痛苦的手动过程,但它工作得非常完美。 似乎“git fetch--all”或类似的东西应该可以做到这一点,也许我在这里忽略了明显的问题,但是我似乎找不到一个内置的git命令来更新那些其他分支而不签出它们。上面的mybranch1:mybranch1语法似乎做得很好,不管我身在何处,但确保重新加载的gitk现在将显示所有远程分支的正确信息,这些分支已通过此获取序列更新

我已经研究了类似但不同问题的bash和one-liner解决方案,例如:[

这些解决方案识别所有分支,并解决稍微不同的问题。 我只想获取和更新跟踪回购分支的本地分支(如果该分支已更改),而不是获取所有分支,包括我不在本地跟踪的分支

我正在努力编写alias或bash脚本(或者暴露我可能错过的“显而易见”的技巧)为了解决这个问题,我只想能够键入一个别名或其他命令来执行git提取,识别所有已更新的分支,然后为每个更改的远程分支执行git提取源aaa:aaa等序列。欢迎提供帮助

[目前正在使用git cmd行版本2.17.1.windows.2,如果有问题,欢迎更新]

我有几个远程回购的本地克隆

另一种方法是只克隆一个回购协议。
并在自己的文件夹中签出多个分支,使用

这样,无需获取,您总是在表示分支的最新版本的工作树中工作

如果这种方法不方便,则需要一个脚本()来更新所有本地分支。
更完整的脚本:“。
这只涉及快进更新,避免任何合并(可能有冲突)更新。
注意:如前所述,需要初始git获取

我有几个远程回购的本地克隆

另一种方法是只克隆一个回购协议。
并在自己的文件夹中签出多个分支,使用

这样,无需获取,您总是在表示分支的最新版本的工作树中工作

如果这种方法不方便,则需要一个脚本()来更新所有本地分支。
更完整的脚本:“。
这只涉及快进更新,避免任何合并(可能有冲突)更新。

注意:如前所述,需要初始git获取。

是的,我确实希望保留两个(或更多)回购协议的独立克隆,并在它们之间来回移动,因为这对我来说还有其他好处。因此我认为这听起来像是一个脚本是必要的,但你所指的脚本并不能真正解决识别需要更新的分支列表的问题。它着重于通过快进更新其中一个分支,并小心地进行更新ly,这很好,但并没有真正自动化这里的整个工作。@DaveB我不会检查哪个分支已更新:我会获取所有内容,然后在每个分支上循环更新它们:VonC指针工作正常,非常好。我还尝试将shell脚本移到别名,查看此处的注释……但无法使其工作。似乎我的错误语法可能是错误地转义或没有转义某些特殊字符。我基本上是在非最后一个字符的行结尾添加了\并尝试了此处讨论的嵌入函数定义。但是,由于shell文件工作正常,这只是一个可选的小技巧。更正:经过更多测试后,我发现bash文件需要添加一个附加项nal行的开头只是“git fetch”,以确保在大的快进循环之前实际获取更改。然后它似乎可以根据需要工作。@DaveB OK。我已经相应地修改了答案。是的,我确实想保留两个(或更多)回购协议的独立克隆,并在它们之间来回移动,因为这对我来说还有其他好处。因此我认为这听起来像是一个脚本是必要的,但你所指的脚本并不能真正解决识别需要更新的分支列表的问题。它着重于通过快进更新其中一个分支,并小心地进行更新ly,这很好,但并没有真正自动化这里的整个工作。@DaveB我不会检查哪个分支已更新:我会获取所有内容,然后在每个分支上循环更新它们:VonC指针工作正常,非常好。我还尝试将shell脚本移到别名,查看此处的注释……但无法使其工作。似乎我的错误语法可能是错误地转义或没有转义某些特殊字符。我基本上是在非最后一个字符的行结尾添加了\并尝试了此处讨论的嵌入函数定义。但是,由于shell文件工作正常,这只是一个可选的小技巧。更正:经过更多测试后,我发现bash文件需要添加一个附加项nal行的开头只是“git fetch”,以确保在大型快进循环之前实际获取更改。然后它似乎可以根据需要工作。@DaveB OK。我相应地修改了答案。