2009-09-01 5 views
2

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

Есть ли способ получить один файл из репозитория?

git-clone, похоже, не позволяет указывать путь, и любые другие команды, которые я нашел (git-fetch, git-pull), похоже, требуют, чтобы работающий локальный репозиторий git работал.

Есть ли способ сделать это?

ответ

2

Вы можете найти ответы в: How to do a "git export"

В частности, git checkout-index вероятно, будет делать работу за вас:

git checkout-index -a -f --prefix=/destination/path/ 

Не забудьте слэш или эта команда не будет делать то, что ты хочешь.

+0

git checkout-index не работает с открытым репозиторием («фатальный: эта операция должна выполняться в дереве работ»). Однако ссылка, которую вы опубликовали, также предлагает git-архив, который отлично работает: («git archive master TESTFILE | tar -x -C/my/destination») Спасибо! – knipknap

+0

А, интересно, я думаю, что у открытого репозитория нет индекса для чтения. Хорошо знать. –

3

Вы можете извлечь один файл из любого изменения в голом хранилище с git show, используя синтаксис git show <rev>:<filename> и т.д .:

 
$ ls 
branches config description HEAD hooks info objects packed-refs refs 
$ git show master:COPYING > /tmp/COPYING 
$ head -5 /tmp/COPYING 
        GNU GENERAL PUBLIC LICENSE 
         Version 3, 29 June 2007 

    Copyright (C) 2007 Free Software Foundation, Inc. 
    Everyone is permitted to copy and distribute verbatim copies 

Есть a couple of examples in the git-show(1) man page. Надеюсь, это будет полезно.

 Смежные вопросы

  • Нет связанных вопросов^_^