区分和修补多个文件

时间:2019-03-20 15:44:06

标签: diff patch

我是Linux和bash的新手,所以对我的问题很愚蠢感到抱歉,但是我在创建和应用补丁文件时遇到了问题。

假设我有两个目录原始/ 新建/ ,并且在原始目录中,很少有4个或5个文件在 new中完全丢失/ 或被更改,其中一些位于某些子目录中。

根据一些我应该使用diff -rubN original/ new/ > patch.diff的教程,但是其他教程却指出我应该使用diff -rubN new/ original/ > patch.diff

无论如何,如果我使用第一个,然后运行patch -t -p0 < patch.diff,则会发生奇怪的事情,我得到所有文件的结果“正在修补文件的原始/子文件夹/文件名”,然后是原始/ 文件夹消失了, new / 文件夹仍然是空的,我必须再次运行patch命令。当我收到消息时,“下一个补丁程序将删除文件new / subfolder / filename,该文件不存在!” -在此之后, new / 文件夹中有文件,这很好,但是我不知道:

  • 为什么原始/ 文件夹被删除了
  • 为什么我必须运行两次patch命令才能将文件保存到 new / 文件夹
  • 为什么补丁会提示我文件不存在?

编辑:如果文本中不清楚,我将尝试将原始/ 文件夹中文件中的更改传输到 new / 文件夹中。似乎第二个差异(diff -rubN new/ original/ > patch.diff)在这种情况下仅适用于一个文件,但仅适用于一个文件...但是只要差异大于一个文件,例如,如果我将新文件添加到原始/ 文件夹(在 new / 文件夹中不存在),补丁以那些奇怪的方式结束,删除不在 new / 文件夹并显示消息“下一个补丁程序将创建文件../到已存在的原始文件/ ..的路径!”和“修补文件../原始文件的路径”

还有一个新发现,在第一次补丁推荐之后,仅 new / 文件夹中不存在的文件似乎从原始/ 文件夹中删除

Edit2 :好的,只需找出如果我使用cd new/; patch -p1 < ../patch.diff补丁就可以了,并且 original / 文件夹不会被删除。 我只是不明白为什么,因为对我来说,它似乎是相同的代码-> / original和/ new文件夹所在的目录中的p0或/ new目录中的p1...。我看不到区别< / p>

0 个答案:

没有答案