首页 > 解决方案 > 在跟踪分支之上重新定位 git 分支

问题描述

假设您有一个带有master分支跟踪origin/master和长期release分支跟踪的 Git 存储库origin/release。现在,假设一个git fetch操作改变了跟踪分支,这样release就落后了。最后,假设您有未隐藏的更改。

如果我们git rebase --autostash在 master 上这样做,那么 master 将与它的远程同步,并且未存储的更改将被保留,没有 rebase/unstash 冲突。问题是,如果我master正在进行未隐藏的更改(并且可能落后origin/master),我应该怎么做才能release不再落后origin/release

我最好的猜测是使用某种形式的git rebase --autostash --onto,但我不确定其余的论点会是什么样子。也许git rebase --autostash --onto release origin/release release

另外,重置 release就足够了origin/release吗?

标签: gitrebasegit-rebasegit-stash

解决方案


master如果您在and的本地副本上没有新的提交release,那么是的,将它们重置为远程副本就足够了,而无需使用rebase. 此外,您甚至可以在不检查分支的情况下实现您的示例场景:

如果您“master正在进行未隐藏的更改”,并且希望release使用origin/release. 您可以简单地运行命令:

git fetch
git branch -f release origin/release

但是,如果您能够做到这一点,那么正如 torek在评论中指出的那样,您可能甚至不需要 的本地副本release,因为您可以随时引用它来origin/release代替。


推荐阅读