2017-08-03 27 views
0

我有一个补丁应用到我的回购和正在运行git的应用正在不改变文件

git apply --directory=$PWD xxxxx.patch 

至于原因,我不会进入,我不能在这种情况下使用git am,我需要使用目录标志。

git的告诉我:

$> git apply --directory=$PWD xxxxx.patch 
code1/xxxxx.patch:337: trailing whitespace. 
     < one partial line of code > 
warning: 1 line adds whitespace errors. 

我已经阅读了空白警告伤势并不严重,不应该从应用补丁停止饭桶。然而,无论什么原因,git并没有应用这个补丁。回购中的当前文件都没有改变。任何想法该怎么做?

+0

'git apply'产生这个警告后,'git status'显示没有任何变化可以添加?这似乎很奇怪。 – torek

+0

@torek'git status'显示列出该补丁的行,但最后显示“没有添加提交”。只是为了咧嘴笑,我在申请之后绑定了'git commit',并且没有再次添加提交。对这些文件的检查显示没有发生任何变化。 –

+0

我在这里唯一能想到的是,由于某种原因,'git apply'认为没有任何文件名与您的文件一起使用。在文档的早期注意这句话:“当从存储库中的子目录运行时,目录外的修补路径将被忽略。”如果你已经将CD导入到子目录中,也许你想省略'--directory = $ PWD',或者你只需​​要从顶层运行它(而不是在这里使用'$ PWD') 。 – torek

回答

1

我注意到在the git apply documentation以下粗体(黑体字我的)一句话:

读取所提供的diff的输出(即“补丁”),并将其应用于文件。 从存储库中的子目录运行时,目录之外的修补路径将被忽略。随着--index选项...

似乎在这种情况下git patch是决定该文件是目录之外。如果从顶层运行,它应该停止决定(虽然当然$PWD本身也会改变;任何--directory选项,如果需要的话,将需要不同的参数)。