Как открыть 2 экземпляра Visual Studio с такими же проектами Git и разными ветвями

Мне нужно открыть 2 экземпляра Visual Studio, для меня будет открыто просто посмотреть код Project X/Branch 1. Другой, будет использоваться для кодирования в Project X/Branch 2. Как это сделать и не потерять изменения в операции фиксации?

Ответ 1

Проблема здесь не в визуальной студии, а в работе git. Когда вы извлекаете ветку в git, она помещает эту ветку в ваше рабочее дерево (файловую структуру, как вы хотите это называть).

С git вы можете проверить только одну ветку за раз, но подождите, есть решение! Используя команду git worktree вы можете создать второе рабочее дерево для того же хранилища в другом каталоге. Затем вы можете открыть это рабочее дерево в Visual Studio для проверки двух разных веток.

Допустим, у вас есть "C:\projects\the_project" и вы хотите создать новое рабочее дерево, скажем, "C:\projects\the_project_2", открыть git bash, перейти в каталог проекта и запустить git worktree add../the_project_2 <branch> где ветка, которую вы хотите проверить в новом рабочем дереве.

Это создаст новый каталог ("C:\projects\the_project_2") и извлечет в него ветвь, без необходимости повторного клонирования репозитория.

Для получения дополнительной информации см. Документацию git worktree.

Примечание. Более ранние версии Visual Studio не знают, как обрабатывать дополнительные рабочие деревья, и не распознают их как репозитории git.

Ответ 2

Если вам нужно открыть код в Visul Studio, необходимо оформить ветку. Поскольку вы не можете извлекать две разные ветки в одном и том же каталоге одновременно, вы не можете избежать извлечения каждой ветки в отдельном каталоге.

Но вы можете установить удаленный из одного каталога в другой каталог git, чтобы вы могли синхронизироваться локально и не нуждаться в каких-либо внешних.

Предположим, вы хотите, чтобы обе ветки были подкаталогами корневого общего каталога ProjectX:

cd ProjectX
git clone -b branch1 <remote repo of project X> directory_branch1 
git clone -b branch2 directory_branch1 directory_branch2

Обновление май 2019 года: поскольку git woorktree теперь работает и поддерживается инструментами на основе графического интерфейса, это, вероятно, решение, которое можно использовать сегодня.