где файлы проекта в удаленном репо в Git?

Я начинаю использовать Git и свой проект VCS. Я создал удаленное репо, используя

git init --bare 

в /codes-repo и отправить туда изменения из локального репо. затем я хочу переместить файлы проекта оттуда в /var/www/project, чтобы они были доступны для http://.... . но я не вижу никаких файлов проекта (index.php,css/,....) в /codes-repo для их копирования, там есть только файлы и папки git. Где они??


person hd.    schedule 03.12.2012    source источник


Ответы (3)


Голый репозиторий не имеет кассы. То есть голый репозиторий содержит только информацию о коммите — он не хранит копии реальных файлов на диске в папке репозитория.

Голые репозитории можно только загружать или извлекать. Чтобы получить файлы, лучше всего клонировать голый репозиторий (как не голый клон) и запустить проверку на клоне.

Другой вариант, если вы чувствуете себя смелым, — преобразовать голый репозиторий в обычный репозиторий (Как преобразовать голый репозиторий git в обычный (на месте)?)

person Chamila Chulatunga    schedule 03.12.2012
comment
Существуют также команды git для извлечения объектов из базы данных. Например. git show. - person bames53; 03.12.2012

Чтобы скопировать файлы из голого репозитория, вы можете использовать git-архив.

GIT_DIR=~/BARE_REPO git archive --format tar master | tar xvf -

команда git archive преобразует целевой коммит (например, marter) в формат tar и отправит на стандартный вывод. Вы можете передать его команде tar для немедленного извлечения.

Другой способ — просто проверить репозиторий.

git checkout ~/BARE_REPO myproject

Однако помещать весь этот каталог на веб-сервер нецелесообразно. В противном случае весь ваш каталог .git будет доступен. Любой может получить ваш исходный код и заполнить историю коммитов (конечно, вы можете заблокировать этот доступ с помощью настроек .htaccess или nginx).

person miaout17    schedule 03.12.2012
comment
Голый репозиторий не имеет каталога .git, поэтому он называется голым репозиторием.# - person dunni; 03.12.2012
comment
Отредактировано. Это была опечатка. Просто укажите пустой каталог репозитория вместо каталога .git. - person miaout17; 03.12.2012

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

Git по-прежнему отслеживает содержимое, коммиты, теги и т. д., но хранит их где-то упакованными. Когда вы выполняете git checkout в непустом репозитории, git обновляет индекс (файлы в репозитории), чтобы отразить древовидный объект, указанный в качестве аргумента.

person Raffaele    schedule 03.12.2012