Как создать архив текущего репозитория, включая локальные нефиксированные изменения, используя git archive
?
Git архив репозитория с незафиксированными изменениями
Ответ 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)