2012-04-12 4 views
7

У меня есть git repo, из которого я хочу сделать. Я делаю обычный git pull без проблем. Проблема в том, что я хочу, чтобы из репо был только один определенный каталог. Мое мышление было то, что я мог бы использовать .gitignore файл с помощью следующего правила:Вытащить только одну директорию из git repo

#Ignore all files 
/
#Except the one I want 
!/temp 

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

+0

Кстати, чтобы игнорировать все файлы, я бы пошел с '/ *' – c00kiemon5ter

+1

Только для записи: вы не можете вытащить только один каталог. Вы всегда держите ** историю **, а не файлы или каталоги. Конечно, вы свободны _work_ только в некоторых файлах. – fork0

ответ

25

git pull извлекает и объединяет удаленную ветку.

.gitignore работает только локально и будет скрывать соответствующие записи от отображения на git status и добавляется к индексу с git add. Это не то, что вы хотите.

Что вы хотите сделать, это удаленная ветка, и оттуда извлеките нужный вам каталог.

$ git fetch <remote> <branch> 
$ git checkout <remote>/<branch> -- relative/path/to/file/or/dir 

файл/dir теперь должен быть в вашей ветке и добавлен в индекс.

+0

Это было именно то, что мне нужно. Спасибо огромное! – Dan

+0

Должно ли это быть 'remove' или' remote' на 2-й строке? –

+0

@ ing0 спасибо, это была опечатка;) – c00kiemon5ter