Исключение вложенных папок GIT

Имеется такая файловая структура:

-root
| .git
| .gitignore
| root-file.txt
| -home
  | .gitkeep
  | home-file.txt

содержимое файла .gitignore:

/home/*
!/home/
!/home/.gitkeep

Команда 1 C:\root> git status:

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   ../.gitignore
        new file:   ../.root_file
        new file:   .gitkeep

Команда [2] C:\root\home> git status выводит соответственно тоже самое.

Как настроить репозиторий или сам git что бы при нахождении в папке home git "не видел репозиторий"?

вот так сделать: C:\root\home> git status

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

Возможно ли это?


Нашёл ответ тут https://stackoverflow.com/questions/14046563/ignore-git-in-parent-directories-for-git-status-branch-etc. Можно ли это сделать на винде и для каждого отдельного репозитория


Ответы (1 шт):

Автор решения: Герман Борисов

Нашёл ответ тут https://stackoverflow.com/questions/14046563/ignore-git-in-parent-directories-for-git-status-branch-etc. Можно ли это сделать на винде и для каждого отдельного репозитория

Да, можно.

Нужно любым способом установить переменную окружения GIT_CEILING_DIRECTORIES равной списку путей, по аналогии с переменной среды PATH. В ответе по ссылке разделитель двоеточие, как принято в unix, в windows — точка с запятой (;).

Важно, что поиск папки .git будет игнорироваться не для указанной папки, а для всех её подпапок.

То есть, если вы выполните в виндовой консоли

SET GIT_CEILING_DIRECTORIES=C:\root\home\

то в самой папке home status будет работать как и сейчас, а в подпапках проектов уже выведет, что это не репозиторий.

Если же сделать

SET GIT_CEILING_DIRECTORIES=C:\root\

То получите как и написано в вопросе. Но при этом и во всех соседних с home подпарках git будет уверен, что вы не в репозитории.

→ Ссылка