git init --separate- git -dir перезаписывает существующую папку. git - PullRequest
0 голосов
/ 02 марта 2020

У меня есть репо:

mkdir test
cd test
git init
touch hi.txt
git add .
git commit -m 'first test add'
git status

, где я хотел бы добавить отдельное репо git для управления различными работами:

git init --separate-git-dir .git2

Выполнение этой команды, однако перезаписывает .git с файлом, в котором хранится символическая ссылка.

Я не хочу, чтобы это произошло: (

Я хотел бы иметь исходную папку .git repo / folder и .git2 жить в гармонии ...

Чтобы я мог запускать такие команды, как:

git --git-dir=.git2 add new_file.txt

Спасибо!

Ответы [ 2 ]

1 голос
/ 02 марта 2020

Цель опции --separate-git-dir состоит не в том, чтобы предоставить вам несколько каталогов .git в одном и том же хранилище, а в для отделения каталога .git от вашего рабочего дерева .

Из документации :

Вместо инициализации хранилища в качестве каталога либо $GIT_DIR, либо ./.git/, создайте там текстовый файл, содержащий путь к фактический репозиторий.

Если это повторная инициализация, репозиторий будет перемещен по указанному пути.

Это позволяет, например, переместить каталог .git в отдельный место хранения (скажем, в целях экономии места или резервного копирования) при сохранении рабочего дерева там, где оно есть.

Если вы хотите объединить несколько отдельных репозиториев (каждое со своей историей) в одно, вы можете посмотреть в субмодулях .

0 голосов
/ 03 марта 2020

Решена проблема с:

git --work-tree=. --git-dir=git2 init

Вместо использования флага --separate-git-dir

Каждая последующая команда теперь требует:

git --work-tree=. --git-dir=git2 status
git --work-tree=. --git-dir=git2 add .
git --work-tree=. --git-dir=git2 commit -m 'yay!'

Janky. Но это именно то, что мне было нужно ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...