我的目的是从分支之一中挑选一个旧提交到master分支,但是由于文件的路径在master分支中已更改,所以我无法这样做。
我有一个提交中的文件(假设提交A(old_branch)),其路径为“ src / path1 / file.py”,并且我拥有一个master分支,其中相同的文件路径已更改为“ src / path2 / file.py”。如何获取此文件的主提交和旧提交之间的更改差异,以便可以将差异直接应用于主文件?
我知道我可以手动在相关文件中进行更改,然后提交,但是我将其作为最后的选择。
谢谢
答案 0 :(得分:2)
您可以使用commit:path
表示法为一对文件建立差异:
git diff -p oldcommit:src/path1/file.py newcommit:src/path2/file.py > file.patch
然后您可以通过直接使用patch
实用程序来应用此补丁:
patch src/path2/file.py file.patch
patch
在Linux系统上默认安装,在Windows系统上可从“ git bash”获得。
另一种方法是编辑生成的补丁中的路径,然后使用git apply
应用补丁:
修改前导块中的文件路径:
# from :
--- a/src/path1/file.py
+++ b/src/path2/file.py
# to :
--- a/src/path2/file.py
+++ b/src/path2/file.py
使用git应用修改后的补丁
git apply file.patch