2015-01-22 3 views
3

Я хочу создать файл исправления, который будет исправлять только определенные файлы из dir2 в dir1. Оба являются git-репозиториями одного и того же проекта, однако dir2 содержит модифицированную модифицированную версию первого. Я хочу только исправлять изменения, внесенные в определенные файлы. У dir2 также есть дополнительные файлы, которые dir1 не имеет. В основном есть файлы конфигурации в каталоге dir1. Мне не нужно изменять dir2, так как они имеют изменения, которые нарушают мою локальную конфигурацию. Как я могу исключить изменение этих файлов?Создайте файл исправления, исключая некоторые файлы

+0

Похож на работу для 'git diff - ...'. – twalberg

+0

Учитывайте, имеет ли смысл, чтобы эти файлы конфигурации делили свои общие элементы. – Schwern

ответ

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 

Затем применить этот патч к dir1, используя patch и соответствующий -p флаг. Все, что вы не хотите менять, используйте git checkout <dir1/somefile>, чтобы отменить изменения. Затем добавьте и зафиксируйте как обычно.

Смежные вопросы