如何从上游更新原始Github分支而不提交合并

nwsw7zdq  于 2022-11-20  发布在  Git
关注(0)|答案(1)|浏览(112)

我知道这里有很多关于这个主题的答案,但它们似乎都具有单分支设置的特点。
所以我用我的Github做了个回购(origin)然后克隆它(local develop),并创建了几个我想处理的特征分支,我还将其推送到origin,并设置本地特征分支以跟踪origin的特征分支的更改(主本地分支也是develop,以及主origin的分支).做了一些本地提交,推送到origin,为这个分支打开了一个PR,但是它还没有合并,所以origin的feature分支在Github上的upstream分支之前和之后都有几个提交。如果我更新origin的feature分支(web UI中的同步分支),它将创建一个合并提交地狱,产生大量不需要的合并提交。
我知道特性分支应该被重定基,但是在这种情况下如何重定基呢?我只需要从我的本地CLI将origin特性分支与upstream(最初已经被分叉的存储库)同步,而不需要将提交推送到origin

46scxncf

46scxncf1#

TL;DR

通过将upstreamorigin(您的分支)作为本地沙箱的两个远程对象,可以很容易地解决这个问题。

详细信息

根据您在下面注解中的说明,您希望将upstream/develop中的更改引入origin/feature而不进行合并提交。为此,您需要将origin/feature重定为upstream/develop
为此,您需要一个带有两个远程控制器的沙箱:

git clone <origin URL>
cd <sandbox name>
git remote add upstream <upstream URL>
git fetch upstream

现在,当您在本地查看日志时,您将同时看到upstream/developorigin/feature。假设您的本地feature当前与origin/feature是最新的,请将其重定为upstream/develop

git rebase upstream/develop

现在,您可以将其强制推到您的fork(在确保强制推确实是您想要的之后):

git push -f origin feature

此时,origin/feature已经有效地基于upstream/develop进行了重定基,并且不再被任何提交所阻碍。您从origin/featureupstream/develop的PR也会自动看到新版本。

相关问题