По какой-то причине у меня есть только один репозиторий для использования.
Но у меня есть несколько проектов, включая java
проекты, php scripts
иAndroid
проекты приложений.
Теперь моя проблема заключается в том, что я должен поместить их в разные подпапки внутри хранилища.
Я использую разные IDE. Вы знаете, что каждая IDE может иметь свое рабочее пространство.
Кто может подсказать мне лучшую практику для решения проблемы?
Ответы:
Хотя большинство людей скажут вам просто использовать несколько репозиториев, я считаю, что стоит упомянуть и о других решениях.
Решение 1
Один репозиторий может содержать несколько независимых ветвей, называемых сиротскими ветвями . Сиротские ветви полностью отделены друг от друга; они не делятся историями.
Это создает новую ветку, не связанную с вашей текущей веткой. Каждый проект должен быть в собственной сиротской ветке.
Теперь по какой-то причине, git нуждается в небольшой очистке после проверки сирот.
Убедитесь, что все передано перед удалением
После того, как сиротская ветвь станет чистой, вы сможете использовать ее как обычно.
Решение 2
Избегайте всех хлопот сиротских ветвей. Создайте два независимых репозитория и отправьте их на один и тот же пульт. Просто используйте разные имена филиалов для каждого репо.
источник
Решение 3
Это для использования одного каталога для нескольких проектов. Я использую эту технику для некоторых тесно связанных проектов, где мне часто приходится переносить изменения из одного проекта в другой. Это похоже на идею ветвей сирот, но ветви не должны быть сиротами. Просто запустите все проекты из одного и того же пустого состояния каталога.
Запустите все проекты из одного подтвержденного пустого каталога
Не ожидайте чудес от этого решения. На мой взгляд, у вас всегда будут неприятности с неотслеживаемыми файлами. Git на самом деле не имеет ни малейшего понятия, что с ними делать, и поэтому, если есть промежуточные файлы, сгенерированные компилятором и проигнорированные вашим файлом .gitignore, вполне вероятно, что они будут иногда зависать, если вы попытаетесь быстро поменяться местами. например, между вашим программным проектом и диссертацией на соискание ученой степени доктора философии.
Однако вот план. Начните так, как вам следует запустить любые проекты git, зафиксировав пустой репозиторий, а затем запустите все ваши проекты из того же состояния пустого каталога. Таким образом, вы уверены, что две партии файлов довольно независимы. Кроме того, дайте своим веткам правильное имя и не лениво просто использовать «мастер». Ваши проекты должны быть отдельными, поэтому дайте им соответствующие имена.
Коммиты Git (и, следовательно, теги и ветви) в основном хранят состояние каталога и его подкаталогов, и Git не знает, являются ли они частями одного и того же или разных проектов, поэтому на самом деле нет проблем с хранением разных проектов в одном и том же репозитории. Тогда проблема заключается в том, что вы очищаете неотслеживаемые файлы из одного проекта при использовании другого или разделяете проекты позже.
Создать пустой репозиторий
Начните свои проекты с нуля.
Работа над одним проектом.
Начать другой проект
всякий раз, когда вам нравится.
Переключаться назад и вперед
Возвращайтесь назад и вперед между проектами, когда захотите. Этот пример восходит к шахматному программному проекту.
Неотслеживаемые файлы раздражают
Однако при переключении между проектами / ветвями вас будут раздражать неотслеживаемые файлы.
Это не непреодолимая проблема
По определению, git не знает, что делать с неотслеживаемыми файлами, и вам решать, что с ними делать. Вы можете остановить перемещение неотслеживаемых файлов из одной ветви в другую следующим образом.
Убедившись в том, что каталог пуст, прежде чем проверять наш новый проект, мы убедились, что в другом проекте нет зависших неотслеживаемых файлов.
Изысканность
Если при фиксации пустого репозитория указываются одинаковые даты, то независимо созданные пустые коммиты в репозитории могут иметь одинаковый код SHA1. Это позволяет независимо создавать два хранилища, а затем объединять их в одно дерево с общим корнем в одном хранилище.
пример
результат
Использовать подкаталоги для каждого проекта?
Это также может помочь, если вы по возможности храните свои проекты в подкаталогах, например, вместо файлов
иметь
В этом случае ваш неотслеживаемый файл программного обеспечения будет
chess/untracked_software_file.prog
. При работе вthesis
каталоге вас не должны беспокоить неотслеживаемые файлы шахматных программ, и вы можете встретить случаи, когда вы сможете работать счастливо, не удаляя неотслеживаемые файлы из других проектов.Кроме того, если вы хотите удалить неотслеживаемые файлы из других проектов, будет быстрее (и менее подвержено ошибкам) сбросить ненужный каталог, чем удалить ненужные файлы, выбрав каждый из них.
Имена ветвей могут включать символы '/'
Таким образом, вы можете назвать ваши ветви как
источник
Я бы использовал
git submodules
.посмотрите здесь Git-репозиторий в Git-репозитории
По состоянию на февраль2019 года я бы предложил
Monorepos
источник
git submodule add [url to git repo]
- git-scm.com/book/en/v2/Git-Tools-Submodules