我希望执行类似于rebase的操作,除了将修订版X应用到修订版Y时,它将在(X ^ .. X)期间更改的所有文件应用于修订版X的确切状态,而不是应用diff修补程序( 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与修订版E中的B相同”。 (在正常的rebase中,我们在E'中得到a.txt状态为B +(D..E))
有这方面的例子吗?
答案 0 :(得分:1)
看看git cherry-pick <commit>
Man Page
cherry-pick尝试将单个提交的更改应用于当前版本。
您需要查看B
,然后选择E
,这可能会给您E'
。然后,您可以继续挑选D
和C
,或者如果更有意义的话,可以在E'
上进行完全变基。
由于此命令仅应用E
的更改,因此您正在跳过D
或C
中可能发生的任何更改。如果您希望E'
包含E
中文件的相同修订版,则唯一的选择可能是复制该文件,签出B
并进行新的提交。