2016-11-25 8 views
2

У меня есть репозиторий Git. Я хочу экспортировать все файлы и папки из моей истории репозитория на основе разных коммитов в папку. Но я хочу экспортировать все коммиты и филиалы отдельно. Вид резервной копии/архива для моего репозитория git.Как извлечь все файлы любой фиксации в папку/архив из репозитория Git?

Например, если у меня есть история репозитория из:

-v2.0 Мой последний коммит -v1.0 Мой Initial совершить

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

Например, папки «/MyGitBackup/Master/v1.0» и «/MyGitBackup/Master/v2.0», которые должны содержать файлы соответствующих коммитов.

Как я могу это достичь? Является ли инструмент GUI способным к этому или что-то подобное? Я использую машину Windows.

ответ

1

Это звучит как пустая трата пространства. Но уверен, что это возможно:

  • Для каждой версии, в соответствии с командой git rev-list
  • Run git archive revision с соответствующими флагами

Это один из способов экспортировать содержимое каждого пересмотра в master к отдельная папка в подкаталоге archive/:

git rev-list master | while read rev; do 
    echo creating archive for $rev 
    mkdir -p archive/$rev 
    git archive $rev | (cd archive/$rev; tar x) 
done 
+0

Это делает папки, названные после контрольной суммы, есть читаемый способ более людей или способ назвать папки хронически. На каком языке этот скрипт? –

+1

Это Баш. В Windows вы можете запустить его в оболочке Git Bash, которая является частью стандартной установки Git. Да, можно настроить скрипт для получения имен из даты фиксации. Также возможно использовать какой-то счет. В вашем примере вы не указали, откуда будут появляться версии v1.0 и v2.0. Очевидно, имена каталогов должны быть уникальными. Если вы скажете мне, как вы хотите, я могу попытаться приспособиться. – janos

+0

Я хочу назвать папки сначала после даты фиксации и после 10 первых символов комментария фиксации. Я хочу, чтобы я выбрал опцию «Имя A-Z», мои папки упорядочены хронически в моем проводнике файлов. –

1

Вы можете использовать git worktree <path> <commit>, который позволяет проверять различные фиксации на разные каталоги. Итак, выполните следующие команды в рабочем каталоге:

git worktree add /MyGitBackup/Master/v1.0 <v1.0 commit hash or tag> 
git worktree add /MyGitBackup/Master/v2.0 <v2.0 commit hash or tag>