Команда git, яка була б найближчою до того, що ви шукаєте git archive.
Див. Резервне копіювання проекту, який використовує git : він включить до архіву всі файли (включаючи підмодулі, якщо ви використовуєте git-archive-allсценарій)
Потім ви можете використовувати цей архів де завгодно, повертаючи лише файли, без .gitкаталогу.
git archive --remote=<repository URL> | tar -t
Якщо вам потрібні папки та файли лише першого рівня:
git archive --remote=<repository URL> | tar -t --exclude="*/*"
Щоб перерахувати лише папки першого рівня віддаленого репо, виконайте вказані нижче дії.
git archive --remote=<repository URL> | tar -t --exclude="*/*" | grep "/"
Примітка: це не працює для GitHub (не підтримується)
Тому вам потрібно буде клонуватись (дрібно, щоб прискорити клонний крок), а потім архівувати локально :
git clone --depth=1 git@github.com:xxx/yyy.git
cd yyy
git archive --format=tar aTag -o aTag.tar
Іншим варіантом буде зробити дрібний клон (як зазначено нижче), але розташування папки .git в іншому місці.
git --git-dir=/path/to/another/folder.git clone --depth=1 /url/to/repo
Папка repo включала б лише файл, без .git.
Примітка: git --git-dir це варіант командиgit , ні git clone.
Оновлення за допомогою Git 2.14.X / 2.15 (Q4 2017): це дозволить уникнути додавання порожніх папок .
" git archive", особливо при використанні з pathspec, зберігає порожній каталог у своєму виході, хоча сам Git ніколи цього не робить.
Це було виправлено.
Див. Комісію 4318094 (12 вересня 2017 р.) Від Рене Шарфе (``) .
Запропоновано: Джефф Кінг ( peff) .
(Об’єднав Хуніо С Хамано - gitster- у комітеті 62b1cb7 , 25 вересня 2017 р.)
archive: не додайте порожні каталоги до архівів
Хоча git не відслідковує порожні каталоги, git archiveїх можна вводити в архіви.
Хоча це підтримується об’єктною базою даних, воно не може бути представлене в індексі, і, отже, навряд чи це траплятиметься в дикій природі.
Оскільки порожні каталоги не підтримуються git, вони також не повинні записуватися в архіви.
Якщо порожній каталог дійсно потрібен, його можна відстежувати та архівувати, розміщуючи в ньому порожній .gitignoreфайл.