重新定位到上游版本
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 中,并尝试再次应用它们,或者通过“三向合并”成功,或要求您解决冲突。
假设我有这样一个 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 中,并尝试再次应用它们,或者通过“三向合并”成功,或要求您解决冲突。