Мне нужно открыть 2 экземпляра Visual Studio, для меня будет открыто просто посмотреть код Project X/Branch 1. Другой, будет использоваться для кодирования в Project X/Branch 2. Как это сделать и не потерять изменения в операции фиксации?
Как открыть 2 экземпляра Visual Studio с такими же проектами Git и разными ветвями
Ответ 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 теперь работает и поддерживается инструментами на основе графического интерфейса, это, вероятно, решение, которое можно использовать сегодня.