2013-11-11 4 views
0

Как я могу заставить команды git (например, git status) не работать в репозитории, если мой рабочий каталог игнорируется этим репозиторием? Например:Сделать команды git не найти родительский репо в каталогах .gitignore'd

  1. Я бегу git init в ~ создать репозиторий для отслеживания точечных файлов

  2. добавить .gitignore файл ~, который выглядит следующим образом:

    * 
    !.gitignore 
    !.bashrc 
    

    и предаю .gitignore и .bashrc

  3. Я перехожу к ~/src/test, который не является репозиторием git

Если я теперь запустить git status, сообщение, которое я хотел бы видеть Возвращается

 
fatal: Not a git repository (or any of the parent directories): .git 

Вместо этого, я буду видеть

 
# On branch master 
nothing to commit (working directory clean) 

потому git status пошел вверх по дереву каталогов и нашел файл .git в моем домашнем каталоге, хотя я проигнорировал рабочий каталог в этом репо.

Единственное решение, которое я вижу, чтобы установить GIT_DIR для репо в моей домашней директории к чему-то вроде .home.git, а затем запустить все мои команды Git для этого репо, как

git --git-dir=~/.home.git --work-tree=~ <command> 

я мог alias that, но я чувствую, что есть, вероятно, лучший способ настроить git для этого.

+0

Это конкретно для примера с dotfiles или общего вопроса? – Leigh

+0

Это общий вопрос, но пример - самая непосредственная вещь, для которой я буду использовать его. Я знаю о других решениях для хранения dotfiles в git, но это кажется самым простым, если я могу заставить его работать. –

+0

Я лично использую git-хранилище в '~/.dotfiles /', у которого есть скрипт начальной загрузки, чтобы скопировать их в '~ /', чтобы избежать этой проблемы; Я думаю, что он схвачен с http://dotfiles.github.io/ или с одной из этих страниц. В общем случае, я не слишком много читал об этом, извините. – Leigh

ответ

0

Я бы порекомендовал вам взглянуть на сообщение в блоге Using Git and Github to Manage Your Dotfiles. Дело в том, чтобы создать отдельный каталог для git-проекта и сделать ссылку на необходимые dotfiles:

home/ 
| 
|--dotfiles/  <-- git working copy 
| `--vimrc 
| `--bashrc 
|--.vimrc->dotfiles/vimrc 
|--.bashrc->dotfiles/bashrc 
+0

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

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