Личное git-репо и файл .gitignore - PullRequest
0 голосов
/ 16 сентября 2018

Я использую экземпляр gitlab для синхронизации данных на нескольких машинах, включая мой домашний каталог (за исключением нескольких вещей, таких как ключи ssl). И одна вещь, которую я хочу увидеть, как правильно иметь дело с тем, как игнорировать данные git-репо в репозиториях, которые у меня есть в папке ~ / workspace / и так далее. Git подходит для их фиксации, так как правильно отмечает, что я не могу синхронизировать другое репо.

В настоящее время я пишу это, поскольку я не получил параметры .gitignore или он не поддерживается. У кого-нибудь есть идея получше, чем просто rm -rf path/to/problem/.git/ для каждого git-репо, которое я снял? У меня их немало, и это становится утомительным, но если это лучший выбор, хорошо. У меня есть все это в сценарии вместе с git add . && git commit -m ....... && git push.


Мне удалось быстро воспроизвести ошибку, по общему признанию, папку, которая меня не волнует, но, тем не менее, образец. Я просто создал репо для своих wow-аддонов, обновил их и не использовал свой скрипт. Вот ошибка:

hint: You've added another git repository inside your current repository.  
hint: Clones of the outer repository will not contain the contents of  
hint: the embedded repository and will not know how to obtain it.  
hint: If you meant to add a submodule, use:  
hint:  
hint:   git submodule add <url> EasyDisenchant  
hint:  
hint: If you added this path by mistake, you can remove it from the
hint: index with:  
hint: 
hint:   git rm --cached EasyDisenchant  
hint:  
hint: See "git help submodule" for more information.

И строки, которые у меня есть в моем главном gitignore:

# Ignore git repo data folders
.git  
**/.git

1 Ответ

0 голосов
/ 16 сентября 2018

Одним из способов решения вашей проблемы является использование подмодулей .

В каждом git-репозитории внутри основного репозитория вы можете сделать:

cd /path/to/module1
git submodule add ssh://path.to.repo/module1
git commit -m "Added submodule module1"

Вы будетезатем создайте новый файл .gitmodules на уровне основного репозитория, ссылающийся на все подмодули.Каждый подмодуль будет храниться независимо в своем собственном репозитории, их также нужно будет отправлять независимо.Ссылки в главном репозитории также необходимо будет сдвинуть.

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

git submodule update --init 

Чтение 7.11 GitИнструменты - Подмодули для деталей.

Другое возможное решение - использовать git поддерево.Прочитайте Поддерево Git: альтернатива подмодулю Git

== EDIT ==

Согласно OP ( Эндрю Шотт ), поддеревья Gitлучше всего адаптирован к ситуации.

Чтобы добавить поддерево:

git subtree add --prefix path/to/new/subtree url.git master --squash

Чтобы обновить поддерево:

git subtree pull --prefix path/to/subtrree url.git master --squash
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...