如何获取git diff文件,并将其应用于作为同一存储库副本的本地分支?

时间:2012-09-07 15:13:24

标签: git diff git-diff

我有一个由同事创建的.diff文件,并希望将该diff文件中列出的更改应用到完全相同的存储库的本地分支。我无法访问用于生成此diff文件的worker的pc或分支。

显然我可以一行一行地重新输入所有内容,但我宁愿不让系统受到人为错误的影响。最简单的方法是什么?

2 个答案:

答案 0 :(得分:585)

将diff文件复制到存储库的根目录,然后执行:

git apply yourcoworkers.diff

its man page上提供了有关apply命令的更多信息。

顺便说一下:按文件交换整个提交的更好方法是发送方上的命令git format-patch和接收方上的git am的组合,因为它还传输了作者信息和提交消息。

如果修补程序应用程序失败,并且生成的diff的提交实际上在您的repo中,则可以使用尝试合并更改的-3 apply选项。

它也适用于Unix管道,如下所示:

git diff d892531 815a3b5 | git apply

答案 1 :(得分:3)

看来您也可以使用 patch 命令。将差异放在存储库的根目录中,然后从命令行运行 patch

patch -i yourcoworkers.diff

patch -p0 -i yourcoworkers.diff

如果他们在不使用 --no-prefix 的情况下创建差异,您可能需要删除前导文件夹结构。

如果是这样,那么您可以使用以下方法删除文件夹中不适用的部分:

patch -p1 -i yourcoworkers.diff

-p(n) 表示要删除的文件夹结构的多少部分。

有关创建和应用补丁 here 的更多信息。

你也可以使用

git apply yourcoworkers.diff --stat 

查看默认情况下差异是否会应用任何更改。如果补丁未正确应用(不同的文件夹结构),可能会显示 0 个文件受影响。