如何将Git提交中对文件X的变更迁移至复制后的文件Y?
迁移Git提交中对文件X的变更到文件Y
定位目标提交
先找出修改文件X的那个提交的哈希值,执行命令:git log --oneline -- fileX从输出里拿到提交哈希(比如
abc123)。生成提交差异补丁
将该提交的差异导出到临时文件:git show abc123 > temp.patch替换补丁中的文件名
把补丁里所有fileX替换成fileY,用sed命令更高效:# Linux环境 sed -i 's/fileX/fileY/g' temp.patch # MacOS环境 sed -i '' 's/fileX/fileY/g' temp.patch也可以直接用文本编辑器打开temp.patch手动替换。
应用修改后的补丁
把补丁应用到当前分支:git apply temp.patch没有冲突的话,文件Y就会包含原提交中对X的所有修改了。
可选:保留提交历史的迁移方式
如果想把原提交的记录也关联到文件Y上,可以用cherry-pick并指定重命名识别阈值:git cherry-pick -X rename-threshold=100 abc123Git会自动识别X和Y是重命名的文件,把变更应用到Y上。如果出现冲突,解决冲突后执行
git cherry-pick --continue即可完成操作。
内容的提问来源于stack exchange,提问作者hlitz
相关产品推荐
相关产品推荐

