2015-11-06 3 views
3

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

/home/dimid  $ cd foo 
/home/dimid/foo $ git status 

... log of ~/.git 

Однако, я хотел бы ограничить свою точку-хранилище только файлы и каталоги, которые начинаются с точкой (например, .vim), так что, когда я нахожусь в ~/foo и ~/foo/.git не существует git log выхода будут обычный

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

несмотря на то, что родительский каталог ~ содержит папку .git.

Я думал об псевдониме git и добавил исключение, есть ли более элегантный способ?

+0

Боюсь, что ее очень трудно получить; если не невозможно. Git создан для перехода к каталогам, чтобы проверить, является ли текущий каталог частью git repo; и поскольку ваш домашний каталог один ... –

+0

Вместо того, чтобы искать, как создавать подкаталоги Git ignore, возможно, вам следует искать, как правильно хранить файлы, такие как ваш .vimrc, в исходном элементе управления. – tom

+0

@tom Мне бы хотелось услышать предложения – dimid

ответ

3

Я не знаю, как это сделать; поскольку Git всегда перемещается вверх по вашему дереву каталогов, пока не найдет каталог .git. Теперь, поскольку ваш каталог /home представляет собой репозиторий git; все подкаталоги всегда найдут каталог .git в вашей папке /home.

Я вижу один обходным, но это не очень чистый ...

  • создать подкаталог в вашем доме (или в другом месте); где вы будете инициализировать свой репозиторий git (например, «/ home/user/configfiles /»)
  • теперь создайте жесткие ссылки между вашими конфигурационными файлами, которые вы хотите сохранить в вашем репозитории git, и те, которые находятся в вашей системе (например, «ln ~/.config» ./ ") (примечание вам нужно использовать жесткие ссылки, в противном случае мерзавец будет только версия путь, где символическая ссылка указывает на)

Таким образом, ваш домашний каталог не будет репозиторий Git больше; и проблема не устраняется ...

+0

Спасибо, но '~' имеет некоторые подмодули (например, '.vim/bundle'), поэтому я предпочел бы не отслеживать их динамически и добавлять жесткие ссылки – dimid

+0

Я знаю, что это не самое красивое решение ... Но вам все равно нужно было делать «git add» для каждого файла? –

+0

Только один раз за SM – dimid

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