#git
Вопрос:
Я хочу инициализировать каталог в качестве репозитория git, но он содержит много .git/
каталогов. Git будет рассматривать их как подмодули. Это не то, чего я ожидал.
Например, я хочу создать config.git
репозиторий, содержащий config.git/.vim/bundle/vim-airline/.git/
и т. Д..
Я все еще хочу сохранить .git/
каталоги в подкаталогах. Просто храните их такими, какие они есть.
Некоторые люди предлагают переименовывать или удалять .git/
каталоги. Это не то, чего я хочу.
Я пробовал submodule
, subtree
, rm -rf cache
, update-index --assume-unchanged
и т. Д. команды. Я нашел много статей в Интернете. Но ни один из них не работает так, как я ожидаю. Я не уверен, что что-то упустил.
Дополнение
Чтобы ответить на комментарий, почему я хочу это сделать. Я просто хочу, чтобы мой каталог конфигурации был проектом Git, чтобы я мог отслеживать все изменения и git push
передавать их на сервер.
Мое окружение примерно такое:
$ ls -al ~/config.git/
......
.screenrc
.ssh/
.vim/
.vimrc
.zshrc
bin/
......
......
$ cd ~
$ ls -l .vimrc .vim .zshrc
.vimrc -> config.git/.vimrc
.vim -> config.git/.vim/
.zshrc -> config.git/.zshrc
Но есть много .git/
каталогов, таких как config.git/.vim/bundle/vim-airline/.git/
.
Когда я git push
и git clone config.git
т. Д. , Он не будет хранить эти файлы подмодулей.
Я также открыт для любых лучших решений.
Комментарии:
1. Вы хотите, чтобы git обрабатывал содержимое
.git
папок, как если бы они были обычными файлами? т. е. вносил в них изменения, имея возможность отменить некоторые из этих изменений…. Это меня удивляет. Может ли это быть meta.stackexchange.com/questions/66377/what-is-the-xy-problem2. Это не то, чего я ожидал, но именно так работает Git. Можете ли вы объяснить конкретную цель, которую вы имеете в виду? То, что вы описываете, — это желаемое решение проблемы. Но вы, возможно, пытаетесь полностью решить неправильную проблему.
3. @Yunnosch извините, что я не совсем понимаю, что вы имеете в виду. Я просто хочу, чтобы они были нормальными файлами. фиксация изменений в них также является обычными файлами. Пока
config.git
это касается репо, они являются обычными файлами, такими как обычные текстовые файлы. Я не знаю, что еще я могу сказать, чтобы прояснить ситуацию. Извините, что я не носитель английского языка.config.git
репо должно знать только об одном репо. Он не должен знать, что существуют какие-либо подмодули. Все остальные файлы являются обычными файлами, такими как foo.txt.4. @DanielMann спасибо за ваш комментарий. Это точно так же, как в примере, который я привел. Я хочу использовать git для управления всеми файлами конфигурации. Некоторые каталоги конфигурации тоже являются модулем git, например:
config.git/.vim/bundle/vim-airline/.git/
. В моей системе так оно и естьln -s config.git/.vim/ ~/.vim
. В прошлом я либоtar
(архивирую) их, либо просто сохраняю их как обычные каталоги без git. Но это не идеальное решение. Я не могу вернуть некоторые файлы конфигурации к предыдущей версии. Поэтому я хочу, чтобы config.git был проектом git сейчас, и эта проблема пока не может быть решена. Я не хочу удалять ссылки..git/
Ответ №1:
Это сложно, потому что Git запрещает это. Репозиторию Git не разрешается содержать другой репозиторий Git. Любой файл , имя которого содержит .git/
или /.git
или /.git/
, в любом сочетании верхнего и/или нижнего регистра (так .giT/
или /.GIT/
включены), запрещен.
Это гарантирует, что клонировать .git
репозиторий нормально, так что никаких злых вещей не произойдет, например, foo/.git/hooks/post-checkout
из-за того, что он существует.
Комментарии:
1. просто любопытно : как вам удалось стать Мастером в git. Одно-два слова помогли бы и другим, таким как я(я понимаю, что опыт играет большую роль, но так ли это?). Даже ВонК восхищается вашим передовым уровнем знаний . У меня буквально была эта закладка в моем браузере.
2. @AsifKamranMalick: Я использую Git примерно с 2007 или 2008 года, и я потратил некоторое время на изучение систем управления версиями в целом.
3. //
some time
изучение систем управления версиями// Это скромный и искренний ответ. Спасибо за ваши слова. Вы определенно наблюдали за развитием систем контроля версий.