2

我希望执行类似于 rebase 的操作,除了将修订 X 应用于修订 Y 时,它将在 (X^..X) 期间更改的所有文件应用修订 X 的确切状态,而不是应用差异补丁 (X^. .X) 到 Y。当然,提交日期、消息、作者姓名和作者电子邮件等与修订版 X 相同。

例如,我有一个 git repo 结构如下:

A-B-C-D-E

我把它“变基”到这个:

A-B-E'-D'-C'

如果 B 有文件 a.txt、b.txt、c.txt,并且 E 修改了文件,我们得到文件 a.txt 与 E 相同,b.txt 和 c.txt 与 B 相同,在修订版 E' 中。(虽然在正常的变基中,我们在 E' 中得到处于 B+(D..E) 状态的 a.txt)

有什么说明吗?

4

1 回答 1

1

看看git cherry-pick <commit> 手册页

cherry-pick 尝试将单个提交的更改应用于当前修订。

你会想退房B,然后樱桃采摘E,那可能会给你E'。然后,您可以继续挑选Dand ,或者如果更有意义的话,可以C进行完整的变基。E'

由于此命令仅应用 的更改E,因此您将跳过可能在D或中的任何更改C。如果您想E'包含 中的文件的相同修订E,您唯一的选择可能是复制该文件,签出B,然后进行新的提交。

于 2013-10-23T13:52:14.337 回答