Заставить команды git не находить родительский репо в каталогах .gitignore.

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

  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>

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


person Rose Kunkel    schedule 11.11.2013    source источник
comment
Это специально для примера dotfiles или общий вопрос?   -  person Leigh    schedule 11.11.2013
comment
Это общий вопрос, но пример — это самое непосредственное, для чего я бы его использовал. Я знаю другие решения для хранения dotfiles в git, но это кажется самым простым, если я смогу заставить его работать.   -  person Rose Kunkel    schedule 11.11.2013
comment
Я лично использую репозиторий git в ~/.dotfiles/, в котором есть сценарий начальной загрузки, чтобы скопировать их в ~/, чтобы избежать этой проблемы; Я думаю, что он взят с dotfiles.github.io или с одной из этих страниц. Однако в общем случае я не слишком много читал об этом, извините.   -  person Leigh    schedule 11.11.2013
comment
Вы когда-нибудь находили решение этой проблемы? У меня есть аналогичный запрос здесь.   -  person Terry    schedule 30.04.2014
comment
В итоге я просто использовал псевдоним, хотя сейчас я работаю на Windows и почти не использую его.   -  person Rose Kunkel    schedule 01.05.2014


Ответы (1)


Я бы порекомендовал вам взглянуть на сообщение в блоге Использование Git и Github для управления вашими файлами точек. Суть в том, чтобы создать отдельный каталог для git-проекта и сделать ссылку на нужные dotfiles:

home/
|
|--dotfiles/      <-- git working copy
|  `--vimrc
|  `--bashrc
|--.vimrc->dotfiles/vimrc
|--.bashrc->dotfiles/bashrc
person Alexander Yancharuk    schedule 11.11.2013
comment
Я знаю об этом сообщении в блоге. Это кажется очень неэлегантным, и я бы предпочел переместить свой GIT_DIR, прежде чем я это сделаю. При этом я чувствую, что должен быть лучший способ, чем перемещение GIT_DIR. - person Rose Kunkel; 11.11.2013