Как экспортировать все измененные / добавленные файлы из Git? - PullRequest
10 голосов
/ 08 июня 2010

Я очень новичок в Git и у меня небольшая проблема.

В SVN [это похоже на историю «Только дураки и лошади» дяди Альберта… «во время войны ...»] , когда я хотел обновить производственный сайт своими последними изменениями сделать различие в TSVN и экспортировать все измененные / добавленные файлы между двумя ревизиями. Как вы можете себе представить, впоследствии было легко получить эти файлы на производственном сайте.

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

Просто чтобы еще раз уточнить, мне нужно экспортировать все изменения между двумя конкретными коммитами.

Заранее спасибо!

Ответы [ 2 ]

14 голосов
/ 08 июня 2010

Как вы хотите их экспортировать?Вы говорите, что у вас уже есть список;что еще ты хочешь?Предположим, вы получаете свой список с git diff --name-only ...

git archive --output=<file> HEAD $(git diff --name-only ...)

tar -czf <file> $(git diff --name-only ...)

cp $(git diff --name-only ...) <export-directory>

Что-то в этом роде

Или вы можете даже использовать сам diff - его можно применить с git apply (или дажеpatch, я полагаю).

2 голосов
/ 23 апреля 2017

Заимствуя из нескольких ответов в здесь , вот еще один способ экспортировать файлы, которые изменены в рабочей области:

git diff --diff-filter=ACMRT --name-only HEAD | xargs tar -rf export.tar

Вам может потребоваться выполнить следующее заранее, чтобы добавить неотслеживаемые файлы, если вам нужно включить их в diff:

git add *

[Это работает в git-bash в Windows]

...