【问题标题】:Git apply patch file can't file the file locationGit应用补丁文件无法归档文件位置
【发布时间】:2021-06-02 04:36:58
【问题描述】:

抱歉,如果这是一个愚蠢的问题,但我想根据文件之间的差异创建一个补丁文件。事情是两个文件位于不同的路径中,因为它们具有相同的名称。我跑了以下

git diff ../../../../../../external/freertos/source/include/FreeRTOS.h ../../../../SystemView\ Patched\ files/FreeRTOS.h > freertosconf.patch

补丁文件创建正常,但应用补丁错误:

error: invalid path '../../../../../../external/freertos/source/include/FreeRTOS.h'

补丁文件的顶部

diff --git a/../../../../../../external/freertos/source/include/FreeRTOS.h b/../../../../SystemView Patched files/FreeRTOS.h

有人看到这里明显的问题吗?

【问题讨论】:

  • 有人看到这里明显的问题吗? 怎么样:a/../../../../../../ 有六个太多的 /.. 部分... b 部分有很多毫无意义的../ 也是如此。 Git 喜欢它的路径名采用a/<where to find file before> b/<where to find file after> 的形式。
  • <where to find file before>git diff 命令中提供的内容相同
  • 只是不是:您使用的是存储库之外的文件。在 a/b/ 部分之后,存储库中的路径名称永远不会有 ../。 (如果您低于存储库的顶层,则 diff 输出具有相对于根目录的解析路径。您可以使用各种前缀选项覆盖它,但如果这样做,这是您的责任修复差异文本以供稍后的 Git 命令使用。)
  • 那么将文件放在同一位置的首选方法是什么?
  • 你真的有 Git 仓库还是只是使用git diff 命令创建补丁(与仓库无关)?

标签: git patch


【解决方案1】:

只需复制文件替换文件并用 git diff 生成差异

cp ../../../../../../external/freertos/source/include/FreeRTOS.h ../../../../SystemView\ Patched\ files/FreeRTOS.h

git diff ../../../../SystemView\ Patched\ files/FreeRTOS.h > freertosconf.patch

PS:为什么不在顶级目录中运行它以避免./../../../

【讨论】:

  • ../../../../SystemView\ Patched\ files/ 不是 git repo,因此我只在 git 初始化的目录中运行。
  • 这两个文件都不在 git repo 上?
  • 一个 (../../../../../../external/freertos/source/include/FreeRTOS.h) 是,另一个不是。
猜你喜欢
  • 2022-12-31
  • 2011-04-14
  • 1970-01-01
  • 1970-01-01
  • 2014-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-11
相关资源
最近更新 更多