Git-追溯修补将被复制的文件
假设我有一个git repos,它包含Git-追溯修补将被复制的文件,git,copy,patch,Git,Copy,Patch,假设我有一个git repos,它包含original.script。在某种程度上,我想做一些类似于原始.script的事情,因此我决定将其作为新脚本修改的起点。script: % git branch before-cp % cp original.script modified.script % git add modified.script % git commit -m "creating a copy to modify" % vim modified.script #... % gi
original.script
。在某种程度上,我想做一些类似于原始.script的事情,因此我决定将其作为新脚本修改的起点。script
:
% git branch before-cp
% cp original.script modified.script
% git add modified.script
% git commit -m "creating a copy to modify"
% vim modified.script #...
% git add modified.script
% git commit -m "made some modifications"
现在,我在original.script
中发现了一个bug。我可以只修补original.script
,但这无助于modified.script
,因为它可能会保留错误。我想在复制前将原始.script
修复回原处,执行如下操作:
% git checkout before-cp
% vim original.script #...
% git add original.script
% git commit -m "fixing a bug in original before I start copying it"
% git checkout master
% git rebase before-cp
但这不是我想要的方式。重新设置基础的“创建副本以修改”提交仍然包含一份modified.script
,该副本与original.script
的未打补丁版本相同(来自cp^之前的)
我同意我的第一次尝试是错误的,但是有正确的方法吗?要追溯修补文件,以便将来的副本复制修补后的版本?或者我必须手动修补modified.script
(以及original.script
副本子树中的任何其他文件)。您必须手动修补modified.script
。当您将original.script
复制到modified.script
时,新提交只会记录您使用一组特定的文件内容创建了modified.script
。当查看diffstat时,git会告诉您您复制了original.script
来创建modified.script
,但它推断,提交本身并没有实际记录这一事实。如果您追溯性地修改original.script
,并尝试重新设置创建modified.script
的提交的基础,它将重新创建与以前完全相同的modified.script
,如果您对提交进行diffstat,它看起来就像是您复制了original.script
,然后进行了一些更改(有效地恢复修复)在实际提交之前
唯一的解决方案是对modified.script
应用相同的补丁