为什么 git rebase --onto 不移动任何提交?
Why does git rebase --onto not move any commits?
我的设置如下所示:
- A - B - C - ... - D - E <- copy-of-master
\
F - ... - G - H <- dev
\
I - J <- bugfix
我想将提交 I 和 J 移动到 copy-of-master
,这只是 upstream1/master
.
的副本
然而命令git rebase --onto copy-of-master dev bugfix
根本没有做任何事情。当我打开拉取请求时,它说 bugfix
和 upstream1/master
是相同的。
此外,在 运行 变基之后,当我 git checkout dev
它告诉我:
Your branch and 'upstream2/dev' have diverged,
and have 1814 and 1799 different commits each, respectively
这只是表明 dev
以某种方式移动到指向 copy-of-master
,因为 upstream1/master
和 upstream2/dev
大约相隔 2000 次提交。
I want to move commits I and J onto copy-of-master, which is just a copy of upstream1/master.
为什么不直接使用 git cherry-pick I J
呢?
git checkout copy-of-master
git cherry-pick I J
git cherry-pick <SHA-1> <SHA-1> <SHA-1> ...
Apply the change introduced by the commit at the tip of the master branch and create a new commit with this change.
您还可以为 cherry-pick 指定一个范围
git cherry-pick <SHA-1>...<SHA-1>
However the command git rebase --onto copy-of-master dev bugfix
does nothing at all
这是预期的:
git 变基到 copy-of-master dev bugfix
会将所有提交移到 dev
之后,直到 bugfix
.
并且在您的图表中,没有提交 after dev
(H
).
- A - B - C - ... - D - E <- copy-of-master
\
F - ... - G - H <- dev
\
I - J <- bugfix
G
(即 dev~1
,在 dev
之前提交一次)但是会工作得很好:所有提交 after G
最多 bugfix
代表 bugfix
次提交。
git rebase --onto copy-of-master dev~1 bugfix
假设 dev~1
(或 G
)是 bugfix
分支从 dev
分支的提交。
我的设置如下所示:
- A - B - C - ... - D - E <- copy-of-master
\
F - ... - G - H <- dev
\
I - J <- bugfix
我想将提交 I 和 J 移动到 copy-of-master
,这只是 upstream1/master
.
然而命令git rebase --onto copy-of-master dev bugfix
根本没有做任何事情。当我打开拉取请求时,它说 bugfix
和 upstream1/master
是相同的。
此外,在 运行 变基之后,当我 git checkout dev
它告诉我:
Your branch and 'upstream2/dev' have diverged, and have 1814 and 1799 different commits each, respectively
这只是表明 dev
以某种方式移动到指向 copy-of-master
,因为 upstream1/master
和 upstream2/dev
大约相隔 2000 次提交。
I want to move commits I and J onto copy-of-master, which is just a copy of upstream1/master.
为什么不直接使用 git cherry-pick I J
呢?
git checkout copy-of-master
git cherry-pick I J
git cherry-pick <SHA-1> <SHA-1> <SHA-1> ...
Apply the change introduced by the commit at the tip of the master branch and create a new commit with this change.
您还可以为 cherry-pick 指定一个范围
git cherry-pick <SHA-1>...<SHA-1>
However the command
git rebase --onto copy-of-master dev bugfix
does nothing at all
这是预期的:
git 变基到 copy-of-master dev bugfix
会将所有提交移到 dev
之后,直到 bugfix
.
并且在您的图表中,没有提交 after dev
(H
).
- A - B - C - ... - D - E <- copy-of-master
\
F - ... - G - H <- dev
\
I - J <- bugfix
G
(即 dev~1
,在 dev
之前提交一次)但是会工作得很好:所有提交 after G
最多 bugfix
代表 bugfix
次提交。
git rebase --onto copy-of-master dev~1 bugfix
假设 dev~1
(或 G
)是 bugfix
分支从 dev
分支的提交。