Как добавить проект в систему управления версиями (существующее удаленное репо GIT) в Visual Studio? - PullRequest
0 голосов
/ 03 августа 2020

У меня есть решение (решение 1), которое содержит проект (проект 1). Этот проект был добавлен в систему управления версиями, и я выполняю все операции git нормально. У меня было другое решение с другим проектом (проект 2), в котором было другое репо.

Я хочу объединить эти 2 решения и поместить их только в одно решение. Итак, я щелкнул правой кнопкой мыши свое решение в решении 1 и добавил к нему существующий проект (проект 2). Моя проблема в том, что репозиторий git на azure DevOps не видит, что я добавил этот проект в решение, поэтому в основном я не могу зафиксировать или вернуться или выполнить какую-либо операцию git. Как я могу это исправить? Мне нужно добавить этот проект в систему управления версиями, но когда я щелкаю по ней правой кнопкой мыши, добавления в систему управления версиями нет.

Заранее спасибо

1 Ответ

1 голос
/ 03 августа 2020

Думайте о локальном репозитории git как о родительской папке. Он включает в себя все (отслеживаемые) файлы в этой папке или подпапках.

В вашем решении могут быть ссылки, указывающие на другие папки, помимо этого репозитория git. Фактически, проект / решение 2 уже имеет отдельное репозиторий git, так что это говорит мне, что он находится в другой папке.

У вас есть несколько способов решить эту проблему, но для начала вы, скорее всего, для начала хотите удалить проект 2 из решения 1. Затем решите, как вы хотите добавить проект 2 к решению 1.


Просто оставьте им отдельные репозитории!

Самый простой ответ - это просто оставить им отдельные репозитории. Вы можете изменять их независимо и обновлять их в собственных репозиториях - однако, как вы заметили, вероятно, с этим могут возникнуть некоторые проблемы, если вы используете собственный интерфейс VS git - я думаю, вам придется переключаться между решениями.

Большим недостатком этого является то, что git не будет автоматически отслеживать, какая версия проекта 2 используется при любой фиксации решения 1. Вам понадобится версия, явно указанная где-то (хотя я думаю, что она, вероятно, где-то в конфигурации решения?). Я бы не стал полагаться на конфигурацию решения для отслеживания базового управления версиями для вас - гораздо лучше, если бы все это надежно отслеживалось непосредственно git. С точки зрения системы контроля версий другие решения лучше.


Просто скопируйте папку поверх

Простейшее решение для управления версиями проекта 2 - это просто скопировать папку проекта 2 из собственной папки / git репо в папку / git репо для решения 1 . Сначала удалите его из своего решения, затем скопируйте его и прочтите проект 2 из нового места.

После этого вы можете добавить его как новый проект в решение 1 и все ссылки на него будет к этой локальной копии.

Однако обратная сторона заключается в том, что теперь решение 1 / проект 2 и исходный проект 2 в отдельном репо расходятся. Если на данный момент проект 2 предназначен только для решения 1, это, вероятно, нормально.


Сделать проект 2 подмодулем

Немного более сложное решение - сделать репо для проекта 2 подмодулем репо для решения 1. Это добавит его как папку в иерархию папок вашего решения 1, поэтому это выглядит так же, как предыдущее решение, но есть небольшая дополнительная работа, чтобы понять, как обновить подмодуль.

В основном, при этой настройке добавляется отдельное git репо со ссылкой на правильную фиксацию в этом репо для использования в любой момент времени. Вы можете обновить репо 2 полностью отдельно или изменить его прямо в подмодуле, сделать новые коммиты и т. Д. c., Но это отдельные репозитории, при этом git отслеживает, какая версия репо 2 (какая фиксация) c.

В прошлый раз, когда я использовал Visual Studio, я не верю, что его собственный git интерфейс поддерживает подмодули. Я не уверен, что сейчас. Возможно, вам потребуется научиться управлять ими из командной строки или с помощью отдельного визуального инструмента GUI Git, например GitExtensions (только на Windows, для v3 +).

...