创建一个不包含某些文件的Patch文件

时间:2015-01-22 19:20:29

标签: git diff patch

我想创建一个补丁文件,只修补从dir2到dir1的某些文件。两者都是同一个项目的git repos,但是dir2包含第一个修改后的高度修改版本。我只想修补对某些文件所做的更改。 dir2还有额外的文件dir1没有。 主要是在dir1中有配置文件我不想更改dir2,因为这些更改会破坏我的本地配置。如何排除更改这些特定文件?

1 个答案:

答案 0 :(得分:2)

获取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>撤消更改。然后正常添加和提交。