重新定位到上游版本

Rebasing to upstream version

假设我有这样一个 git 配置:

o--o--o--o--o--o remote master
       \
        o--o--o--o my master
            \
             o--o--o feature branch

例如,我想将我的 master 分支变基到远程 master 上以获取上游更改。我可以这样做:

get rebase --onto remote_maste remote_maste my_master

那么我会得到这个结构:

o--o--o--o--o--o remote master o--o--o--o my master
       \                       A' B'
        o--o
        A  B\
             o--o--o feature branch

然后我将它强制推送到我的 repo 以使 my_master 更新可供其他人使用(假设 my_master 分支在变基过程中因新提交而关闭):

git push -f origin my_master:my_mater

所以我有两个问题。 第一个是:其他人是否能够将他们的功能分支重新设置为更新的主分支?(我想是的,但我不确定) 第二个是主要问题:如果前一个问题的答案是肯定的,那么这些 A 和 B 提交会发生什么,因为它们已经在更新的 master 中(但有其他哈希)?它们会消失,应用在上面(所以我会有重复提交)还是什么?

提前致谢。

应该弄清楚它们是一样的,不要重复应用。

试试这个:

git checkout feature-branch
git rebase origin/master -i #or just master

你会看到一个要应用的提交列表,它会发现 A 和 B 已经被应用,并且将它们排除在外,只要它们是相同的。

如果它们略有不同,(比如如果有人在功能分支中修改了一个)它应该将它们留在 rebase 中,并尝试再次应用它们,或者通过“三向合并”成功,或要求您解决冲突。