我想创建一个补丁文件,只修补从dir2到dir1的某些文件。两者都是同一个项目的git repos,但是dir2包含第一个修改后的高度修改版本。我只想修补对某些文件所做的更改。 dir2还有额外的文件dir1没有。 主要是在dir1中有配置文件我不想更改dir2,因为这些更改会破坏我的本地配置。如何排除更改这些特定文件?
答案 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>
撤消更改。然后正常添加和提交。