Как экспортировать все измененные/добавленные файлы из Git?

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

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

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

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

Спасибо заранее!

Ответ 1

Как вы хотите экспортировать их? Вы говорите, что у вас уже есть список; что еще ты хочешь? Предположим, что вы получаете свой список с помощью 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 diff - он может применяться с git apply (или даже patch, я полагаю).

Ответ 2

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

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

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

git add *

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