git apply不会更新工作副本

时间:2013-12-07 11:00:16

标签: git

我需要在分支上应用补丁。补丁的一些变化可以干净利落,有些可能不会。

我使用以下命令:

git diff hash1 hash2 -u | git apply -3

由于某种原因,它什么也没做。它告诉我一些补丁错误等,但我的工作副本没有变化。这很奇怪,补丁包含新文件,这些文件肯定可以应用于工作副本,但它们也不会被创建。

我尝试将申请替换为patch

git diff hash1 hash2 -u | patch -p1 --binary

它有效。我的意思是它修补了一些文件,创建了其他文件等但是我想将失败的朋友与git mergetool合并,所以我需要使用git apply

它有什么问题,如何解决?

P.S。

我可以在一个文件中应用更改:

git diff hash1 hash2 -u -- path/to/file | git apply -3

然后应用成功并修补文件。

1 个答案:

答案 0 :(得分:0)

你在寻找git apply的--reject选项吗?

从手册页:

--reject
    For atomicity, git apply by default fails the whole patch
    and does not touch the working tree when some of the hunks
    do not apply. This option makes it apply the parts of the
    patch that are applicable, and leave the rejected hunks in
    corresponding *.rej files.

但是,我没有看到这与git mergetool有什么关系......