Mik*_*e_K 440 git diff git-diff
我有一个由同事创建的.diff文件,并希望将该diff文件中列出的更改应用到完全相同的存储库的本地分支.我无权访问用于生成此diff文件的worker的pc或分支.
显然,我可以逐行进行并重新输入所有内容,但我宁愿不让系统受到人为错误的影响.最简单的方法是什么?
Phi*_*ipp 668
将diff文件复制到存储库的根目录,然后执行以下操作:
git apply yourcoworkers.diff
Run Code Online (Sandbox Code Playgroud)
有关该apply
命令的更多信息,请参见其手册页.
顺便说一下:通过文件交换整个提交的更好方法是git format-patch
发送方然后git am
接收方上的命令组合,因为它还传输作者信息和提交消息.
如果修补程序应用程序失败,并且生成的diff的提交实际上是在您的repo中,则可以使用该-3
选项apply
尝试合并更改.
它也适用于Unix管道,如下所示:
git diff d892531 815a3b5 | git apply
Run Code Online (Sandbox Code Playgroud)
1.2*_*tts 22
看来你也可以使用 patch 命令。将差异放在存储库的根目录中并patch
从命令行运行。
patch -i yourcoworkers.diff
Run Code Online (Sandbox Code Playgroud)
或者
patch -p0 -i yourcoworkers.diff
Run Code Online (Sandbox Code Playgroud)
如果他们创建 diff 时未使用--no-prefix
.
如果是这样,那么您可以使用以下方法删除不适用的文件夹部分:
patch -p1 -i yourcoworkers.diff
Run Code Online (Sandbox Code Playgroud)
-p(n) 表示要删除文件夹结构的多少部分。
有关创建和应用补丁的更多信息,请参见此处。
您还可以使用
git apply yourcoworkers.diff --stat
Run Code Online (Sandbox Code Playgroud)
查看默认情况下的 diff 是否会应用任何更改。如果补丁未正确应用,可能会显示 0 个文件受影响(不同的文件夹结构)。