创建排除某些文件的补丁文件
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>
撤消更改。然后正常添加和提交。
我想创建一个补丁文件,它只会将某些文件从 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>
撤消更改。然后正常添加和提交。