创建排除某些文件的补丁文件

Create a Patch file excluding some files

我想创建一个补丁文件,它只会将某些文件从 dir2 补丁到 dir1。两者都是同一项目的 git 回购,但是 dir2 包含第一个的修改高度修改版本。我只想修补对某些文件所做的更改。 dir2 也有 dir1 没有的额外文件。 主要是 dir1 中的配置文件我不希望 dir2 更改,因为这些更改会破坏我的本地配置。我怎样才能排除更改这些特定文件?

要获取 dir1 和 dir2 共享的文件...

cd dir1
tree -aif --noreport > dir1.out
cd dir2
tree -aif --noreport > dir2.out
cat dir1.out dir2.out | sort | uniq -d > shared.out

(您可能可以使用 ls 来获取列表,但我永远做不对)

要获取自给定提交以来对 dir2 文件的更改,这些文件也在 dir1 中...

cd dir2
git diff <commit> -- `cat shared.out` > dir2.patch

然后使用 patch 和适当的 -p 标志将该补丁应用于 dir1。任何您不想更改的内容,请使用 git checkout <dir1/somefile> 撤消更改。然后正常添加和提交。