Git How to: потянуть diff между ветками - PullRequest
7 голосов
/ 12 декабря 2011

Я хотел бы загрузить файлы, которые отличаются между двумя ветвями, в локальную папку. Возможно ли это с помощью Git?

Поскольку файлы добавляются только в исходную ветку, они не изменяются.

Ответы [ 2 ]

12 голосов
/ 12 декабря 2011

Вы можете получить все изменения между ветвями с чем-то вроде этих строк:

git diff origin/master origin/develop > my_diff.diff

Если вы добавляете только [текстовые] файлы, то было бы тривиально проанализировать файл diff и разбить его на отдельные файлы.,(Я бы сказал, это скрипт ruby ​​длиной до 50 строк кода)

8 голосов
/ 12 декабря 2011
git archive --format=tar --prefix="exported/" -o export.tar br2 $(git diff --name-only br1 br2)

Если вы сейчас находитесь на br2, а br1 отстает от него, то часть внутри скобок (git diff...) даст вам список файлов, измененных между двумя головками. Команда git archive экспортирует эти файлы в том виде, в каком они находятся на br2 (т.е. в вашей текущей голове), в файл tar с именем export.tar внутри каталога с именем exported/.

Это предполагает (как вы указали в своем вопросе), что вы только добавили новые файлы и что все различия добавлены. Команда также экспортирует измененные файлы, но вы утверждаете, что их нет.

...