GIT - скопировать новейшую ветку в другой каталог
Я прочитал документацию по GIT, но не мог понять, как просто скопировать последнюю версию кода в другой каталог (или развернуть его). Конечно, я мог бы просто copy -r code /path/to/another/dir
, но затем он копирует все другие файлы, созданные GIT. И мне это не нужно. Так есть ли простой способ просто скопировать необработанные файлы без всех этих скрытых файлов (или копий оригинальных файлов)?
2 ответа
Это один из способов сделать это:
mkdir /path/to/target/dir
git archive master | tar x -C /path/to/target/dir
git archive
Команда обычно генерирует архивный файл из содержимого хранилища. Он сбрасывает в архив на стандартный вывод, который вы обычно перенаправляете в файл. Здесь мы немного подрываем команду: вместо перенаправления мы немедленно извлекаем ее в указанную директорию. Целевой каталог должен быть создан первым.
Тем не менее, вы, кажется, хотите это для развертывания вашего проекта. Лично я использую сам Git для развертывания проектов. Таким образом, вы можете легко обновить и откатиться с помощью команд Git. Конечно, .git
каталог будет существовать в каталоге развертывания, с другой стороны, простая копия не удалит файлы, которые были удалены в хранилище, они останутся в месте назначения.
Наконец, вас может заинтересовать мой личный фаворит: использование ловушки после получения для удаленного развертывания проектов.
Вариант 1: Исключить.git подкаталог
Предполагая, что у вас есть стандартные настройки для вашего репозитория Git, вы можете просто скопировать все в корневой каталог вашего проекта, но исключить .git
подкаталог.
Видимо, вы можете сделать это с помощью терминала bash, используя rsync
:
rsync -av --exclude='.git' source destination
но я не уверен, как вы могли бы сделать это с Windows copy
,
Вариант 2: экспорт архива git
Другой вариант заключается в использовании git archive
:
git archive --format zip --output "output.zip" master -0
даст вам несжатый архив (-0
это флаг для несжатого). Проблема в том, что вы должны извлечь файлы из архива.
Если у вас есть доступ к инструментам Unix в чем-то вроде оболочки bash или Cygwin, вы также можете использовать эти инструменты Unix в ответе janos. Смотрите также Как сделать "git export" (например, "svn export").
# Вариант 3: использовать git ls-файлы
Редактировать на самом деле возникают проблемы с этим, потому что я передаю аргументы cp
в неправильном порядке (файлы в качестве целевых каталогов, а не источников), поэтому оставьте это сейчас.
Другой вариант - получить список всех файлов, которые Git отслеживает в вашей рабочей копии, а затем передать их в качестве аргумента команде копирования. Вот пример с Unix cp
:
git ls-files | xargs cp <destination-root>