繁体   English   中英

使用Git,如何创建仅包含特定目录中更改的补丁列表?

[英]Using Git, how do I create a list of patches that contains only changes in a certain directory?

我正在尝试将Julia的补丁应用于Femtolisp。 但是,Julia将其版本保留在自己的源代码管理树中。 因此,诸如git format-patch类的工具无法使用,因为它们不允许按目录过滤。

我是编写脚本以过滤掉不需要的补丁程序的最佳选择,还是Git内置了此功能?

我不知道可以执行所需的GIT命令,但是可以使用一些命令和一些Shell来完成工作。 类似于以下内容:

$ mkdir mypatches
$ N=1
$ for x in $(git rev-list FROM_COMMIT..TO_COMMIT)
  do
      P=$(git diff $x^..$x -- DIRECTORY)
      if [ -n "$P" ]
      then
          echo "$P" > mypatches/$(printf %06d $N).patch
          N=$((N+1))
      fi
  done

您可以使用git diff命令来获取两个文件夹之间的区别...

git diff folder1 folder2 > diff.patch
cd folder1
patch -p1 < diff.patch

或者您可以使用简单的diff命令...

diff -Naru folder1 folder2 > diff.patch
cd folder1
patch -p1 < diff.patch

在这种情况下,文件夹1和文件夹2的区别仅适用于文件夹1。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM