Вам просто потрібно переконатися, що сховище знає, де знаходиться дерево роботи, і навпаки.
Щоб повідомити сховище, де знаходиться дерево роботи, встановіть значення конфігурації core.worktree
. Щоб дозволити робочому дереву знати, де знаходиться каталог git, додайте файл з іменем .git (не папка!) Та додайте рядок типу
gitdir: /path/to/repo.git
Оскільки git 1.7.5 команда init вивчила додатковий варіант для цього.
Ви можете ініціалізувати новий окремий сховище
git init --separate-git-dir /path/to/repo.git
Це ініціалізує сховище git в окремому каталозі та додасть .git файл у поточний каталог, який є робочим каталогом нового сховища.
Раніше до 1.7.5 вам довелося використовувати дещо інші параметри та додавати файл .git самостійно.
Для ініціалізації окремого сховища наступна команда пов'язує робоче дерево з сховищем:
git --git-dir=/path/to/repo.git --work-tree=. init && echo "gitdir: /path/to/repo.git" > .git
Ваш поточний каталог буде робочим деревом, а git використовуватиме сховище у /path/to/repo.git
. Команда init автоматично встановить core.worktree
значення, визначене --git-dir
параметром.
Ви навіть можете додати псевдонім для цього:
[alias]
initexternal = !"f() { git --work-tree=. --git-dir=\"$1\" init && echo \"gitdir: $1\" >> .git; }; f"
Використовуйте керування версіями git у робочому каталозі, доступному лише для читання
Маючи вищенаведені знання, ви навіть можете налаштувати керування версіями git для робочого каталогу, не маючи дозволів на запис. Якщо ви використовуєте --git-dir
будь-яку команду git або виконуєте кожну команду з сховища (замість робочого каталогу), ви можете залишити файл .git і, отже, не потрібно створювати жодних файлів у робочому каталозі. Дивіться також відповідь Леоса