当每个人都变基时,在共享分支上变基
Rebasing on a shared branch when everyone rebases
我在网上读到 rebase 命令不应该在 public 分支上 运行。我有以下情况:
master
已提交 A1 <- A2 <- A3
stable
在 A1 从 master
分支,提交 B1
dev1
在 B1 从 stable
分支并提交 C1 <- C2 <- C3
dev2
在 C2 从 dev1
分支并提交 D1 <- D2
现在,如果我想用 master
的更新来更新 stable
,我会 运行 git rebase master
并强制推送。现在,dev1
在 stable
的基础上做了一个 rebase 以获得 master
的更新,而 dev2
需要 master
和 dev1
做一个在 dev1
的基础上变基。
在这种情况下,只要我遵守命令,运行 stable
、dev1
和 dev2
分支上的 rebase 命令是否可以?如果这不行,那么将最新的 master
合并到 stable
并将最新的 master
、dev1
更新合并到 dev2
的替代方法是什么?我唯一能想到的就是创建一个拉取请求,merge
代码,然后重新分支。这是更好的选择还是我遗漏了什么?
With Git 2.18+,你不需要做所有这些变基:只有一个:
git checkout stable
git rebase --rebase-merges master
dev1
和 dev2
也应该变基:您需要将本地分支重置为那些新的变基分支 HEAD。
在你的例子中,如果你为 master
、stable
、dev1
和 dev2
设置了本地分支,这意味着只有一个变基(stable
) 将变基所有相关分支(dev1
和 dev2
)
--x--x--x--x (master)
\
s--s--s (stable)
\
d--d (dev1)
\
d--d (dev2)
A git checkout stable; git rebase --rebase-merges master
可以:
--x--x--x--x (master)
\
s'--s'--s' (stable)
\
d'--d' (dev1)
\
d'--d' (dev2)
无需变基 stable
,然后 dev1
,然后 dev2
!
我在网上读到 rebase 命令不应该在 public 分支上 运行。我有以下情况:
master
已提交 A1 <- A2 <- A3
stable
在 A1 从 master
分支,提交 B1
dev1
在 B1 从 stable
分支并提交 C1 <- C2 <- C3
dev2
在 C2 从 dev1
分支并提交 D1 <- D2
现在,如果我想用 master
的更新来更新 stable
,我会 运行 git rebase master
并强制推送。现在,dev1
在 stable
的基础上做了一个 rebase 以获得 master
的更新,而 dev2
需要 master
和 dev1
做一个在 dev1
的基础上变基。
在这种情况下,只要我遵守命令,运行 stable
、dev1
和 dev2
分支上的 rebase 命令是否可以?如果这不行,那么将最新的 master
合并到 stable
并将最新的 master
、dev1
更新合并到 dev2
的替代方法是什么?我唯一能想到的就是创建一个拉取请求,merge
代码,然后重新分支。这是更好的选择还是我遗漏了什么?
With Git 2.18+,你不需要做所有这些变基:只有一个:
git checkout stable
git rebase --rebase-merges master
dev1
和 dev2
也应该变基:您需要将本地分支重置为那些新的变基分支 HEAD。
在你的例子中,如果你为 master
、stable
、dev1
和 dev2
设置了本地分支,这意味着只有一个变基(stable
) 将变基所有相关分支(dev1
和 dev2
)
--x--x--x--x (master)
\
s--s--s (stable)
\
d--d (dev1)
\
d--d (dev2)
A git checkout stable; git rebase --rebase-merges master
可以:
--x--x--x--x (master)
\
s'--s'--s' (stable)
\
d'--d' (dev1)
\
d'--d' (dev2)
无需变基 stable
,然后 dev1
,然后 dev2
!