无法在非存储库源树中使用git应用补丁文件

时间:2015-10-29 15:29:00

标签: git linux-kernel apply patch

根据Pro Git的书,可以将补丁文件应用到工作目录,git数据库没有变化,如果没有这些选项,该命令仅将补丁应用于文件,并且不要求它们在Git存储库。地址文件不需要受版本控制,也不需要添加到暂存区域。项目的源代码树也不一定是git存储库。

我无法应用收到的补丁文件。情况可能有点具体。详情如下。

  • 补丁文件涵盖的所有文件都在Linux内核源代码树
  • 内核源代码树是更大项目的子目录
  • 最初,内核源代码树不是本地git存储库
  • 这里要完成的git存储库是针对整个项目的 (其中内核源代码树是一个组件)并且仅用于目的 应用补丁文件
  • ClearCase版本控制下的整个项目,快照视图
  • 默认情况下,所有文件都是只读的
  • git init在内核源代码树的父目录中执行, 表示内核源代码树的父包含

    .git/

    kernel/

    other project's components

  • git status列出内核源代码树父目录的所有子目录 作为未跟踪的文件
  • 补丁文件放在内核源代码树的子目录
  • 很可能项目的源状态不对应 到补丁文件所涵盖的两个源状态中的任何一个

<path>/kernel$ git apply -v --stat patch_files__view_private_files/my-patch-file.patch 结果是 0 files changed, 0 insertions(+), 0 deletions(-)

使用git成功应用补丁文件的先决条件是 在这种环境下没有实现? 至于上面的情况,git是应用补丁文件的好选择吗?

1 个答案:

答案 0 :(得分:2)

You probably need to use git apply --directory=kernel.

git apply assumes paths are relative to the repository root, regardless of the directory you're running it from.