Подтвердить что ты не робот

Git архив репозитория с незафиксированными изменениями

Как создать архив текущего репозитория, включая локальные нефиксированные изменения, используя git archive?

4b9b3361

Ответ 1

Я знаю, что это старо, но я думаю, что нашел решение.

Run:

stashName=`git stash create`;
git archive <options> $stashName

Так как git хочет получить твердую фиксацию для создания архива, мы можем сделать фиксацию "один" с помощью git stash. Команда create просто создает фиксацию stash (не reset ваш рабочий каталог или нажимает его на стек стека) и возвращает хэш для него.

Если вы обеспокоены пространством от оборванного фиксации, вы можете очистить его с помощью git gc --prune=now. В противном случае подождите всего две недели, и он исчезнет.

Ответ 2

Улучшение ответа nevsan для моей цели - архивировать последний код в любом случае (совершенный или нет):

uploadStash=`git stash create`; git archive -o code_outgoing.zip ${uploadStash:-HEAD}

Ответ 3

Другое решение с помощью git ls-files:

git ls-files -z | xargs -0 tar -czvf archive.tar.gz

Ответ 4

Если вы не внесли изменений, то git archive вам не поможет. Если вам просто нужен снимок рабочей области, tar, вероятно, лучший выбор.

Ответ 5

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

git archive -o /path/to/save/temp.zip $(git stash create) $(git diff --name-only xxx_version_to_start)