2014-11-27 2 views
1

Я создал репозиторий git для своих точечных файлов, но когда я использовал git init в своем домашнем каталоге, кажется, что он рассматривает все подкаталоги как часть git. Я добавил репозиторий через git add remote. Проблема в том, что мой баш показывает, в какой ветви я на самом деле есть, например, пользователь в userr в папке на ветке. Поэтому, когда я иду на свой рабочий стол (~/Desktop), он по-прежнему считается git-каталогом, я могу даже использовать git-статус там. Однако я хотел бы рассмотреть только домашний каталог для репозитория.Как заставить git работать только в текущем каталоге?

ответ

0

Я думаю, я нашел решение этой темы: Git ignore sub folders ответ @mgold «s. он предлагает добавить

*/* 

to gitignore. Он работал для меня в окнах, если вы используете систему на основе Linux, вам может понадобиться изменить регулярное выражение. Надеюсь, это поможет.

1

(редактирование: третий вариант ниже, GIT_CEILING_DIRECTORIES, вероятно, лучше всего)

Если вы явно не сказать ублюдка, где найти gitdir текущего репозитория, единственный способ это должен найти это искать вверх. На самом деле нет другого выбора: вы говорите, или он ищет вверх.

Ближайший я могу получить то, что вы хотите, чтобы просто разорвать мерзавца в этих каталогах, вставив недопустимую ссылку gitdir

echo gitdir: this isn\'t part of any containing repository >$notinthisone/.git 

и сказать вмещающего хранилище игнорировать его:

echo $notinthisone >> .gitignore 

после чего

$ cd $notinthisone 
$ git status 
fatal: Not a git repository: this isn't part of any containing repository 

и git add от con пропуская репозиторий, он пропустит его, и если вы попытаетесь его заставить, вы получите указанное выше сообщение об ошибке.


Для альтернативного способа реализации вашего dotfile репо, вы можете настроить хранилище использовать любой worktree вы хотите. Итак:

mv .git somewhere/out/of/the/way 
cd !$ 
git config core.worktree $OLDPWD 

echo '*'  >> .gitignore 
echo '!.*' >> .gitignore 

git add .gitignore 
git commit -m 'ignoring un-hidden files' 

Живи и узнать, читая GIT документов, проверяя все возможные скрытые переопределения в каталог .git, я столкнулся с этим:

GIT_CEILING_DIRECTORIES 

This should be a colon-separated list of absolute paths. If set, it is a list of directories that git should not chdir up into while looking for a repository directory. It will not exclude the current working directory or a GIT_DIR set on the command line or in the environment. (Useful for excluding slow-loading network directories.)

So экспорт это и сделать то же самое в вашем эквиваленте .bashrc, например

export GIT_CEILING_DIRECTORIES=$HOME 

и мерзавец будет не рекурсию вверх в ваш домашний каталог. Тогда в вашем домашнем каталоге

echo '*' >>.gitignore 
echo '!.*' >>.gitignore 

и мерзавец никогда не рекурсию вверх в репозиторий вашей домашней директории в

+0

Я попробовал вторую альтернативу, но это не сработало.У меня все еще есть тот же результат при доступе к более глубоким папкам, например: viniciusd на Viniciuss-MacBook-Pro в ~ на главном \ ☿ cd Desktop \ viniciusd на Viniciuss-MacBook-Pro в ~/Desktop на главном \ ☿ \ –

+0

Если вы в каталоге без '.git' в любом месте пути к корню, тогда у вас есть явное gitdir переопределение где-нибудь. Сделайте 'echo $ {! GIT _ *}', чтобы увидеть, переопределяет ли среда какие-либо параметры .git. – jthill

+0

Не распознано: ☿ echo $ {! GIT_ *} zsh: событие не найдено: GIT_ –

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