Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git-追溯修补将被复制的文件_Git_Copy_Patch - Fatal编程技术网

Git-追溯修补将被复制的文件

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

假设我有一个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 #...
% 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
应用相同的补丁