gpt4 book ai didi

Git:如何在不获取的情况下自动将本地分支与远程跟踪 merge

转载 作者:太空狗 更新时间:2023-10-29 13:25:58 25 4
gpt4 key购买 nike

想象一下,我有几个分支:master、a、b、c ...

现在我在主分支和“git pull”。这会将所有更改从远程服务器获取到 origin/master、origin/a、origin/b ... 分支并将 CURRENT 分支(master)与 origin/master merge 。但是后来我想切换到 A 分支并再次 merge 来自远程跟踪分支的这些远程更改,而无需再次获取更改(因为它们已经在 origin/a 分支中)。

有没有更简单的方法来做到这一点,而不是指定我跟踪的确切远程分支(即自动)?

最佳答案

我不相信有一个内置的命令。但是,您可以这样做:

#!/bin/bash
head=$(git symbolic-ref HEAD) || exit
head=${head#refs/heads/}
merge=$(git config --get branch.$head.merge) || { echo "no tracking branch"; exit 1; }
remote=$(git config --get branch.$head.remote) || remote=origin
git merge $remote/${merge#refs/heads/}

# alternatively, as in Aristotle's answer:
# head=$(git symbolic-ref HEAD) || exit
# upstream=$(git for-each-ref --format='%(upstream:short)' "$head"
# [ -z "$upstream" ] && { echo "no tracking branch"; exit 1; }
# git merge $upstream

我想我已经很好地涵盖了我的基础——如果处于分离的 HEAD 状态,或者如果当前分支没有跟踪分支,它会以失败状态退出。它默认为原点,就像正常的 git 传输命令一样。 (如果你试图在一个跟踪远程分支以外的东西的分支上使用它,就会发生一些奇怪的事情,即不是 refs/heads/* 的形式,但这似乎不太可能。)看起来不像实际上为您节省了很多时间,但就是这样!

如果你想使用它,只需将它存储在某个地方并为其添加别名,或者将其命名为 git-something 并将其放入你的 PATH 中。

关于Git:如何在不获取的情况下自动将本地分支与远程跟踪 merge ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4049434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com