如何获取在两次不同的提交之间路径已更改的文件的差异?

时间:2019-11-19 08:29:26

标签: git github

我的目的是从分支之一中挑选一个旧提交到master分支,但是由于文件的路径在master分支中已更改,所以我无法这样做。

我有一个提交中的文件(假设提交A(old_branch)),其路径为“ src / path1 / file.py”,并且我拥有一个master分支,其中相同的文件路径已更改为“ src / path2 / file.py”。如何获取此文件的主提交和旧提交之间的更改差异,以便可以将差异直接应用于主文件?

我知道我可以手动在相关文件中进行更改,然后提交,但是我将其作为最后的选择。

谢谢

1 个答案:

答案 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