608

我有一个同事创建的 .diff 文件,并且想将该 diff 文件中列出的更改应用到完全相同存储库的本地分支。我无权访问用于生成此差异文件的该工作人员的 pc 或分支。

显然,我可以逐行重新输入所有内容,但我宁愿不要让系统出现人为错误。最简单的方法是什么?

4

2 回答 2

911

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

git apply yourcoworkers.diff

有关该apply命令的更多信息,请参见其手册页

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

如果补丁应用程序失败并且生成差异的提交实际上在您的存储库中,您可以使用该-3选项apply尝试合并更改。

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

git diff d892531 815a3b5 | git apply
于 2012-09-07T15:17:46.197 回答
6

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

patch -i yourcoworkers.diff

或者

patch -p0 -i yourcoworkers.diff

如果他们在不使用--no-prefix.

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

patch -p1 -i yourcoworkers.diff

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

有关在此处创建和应用补丁的更多信息。

你也可以使用

git apply yourcoworkers.diff --stat 

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

于 2021-02-04T08:29:55.283 回答