Как вы получаете конкретную версию из Git в Visual Studio 2015?
Есть ли способ получить определенную версию (из определенного коммита) файла в Visual Studio 2015 - Team Explorer/Team Services Git?
Я просто хочу запустить решение с предыдущей версией файла, просто чтобы посмотреть, как все работает, а затем вернуться к последней версии, чтобы продолжить разработку.
Я не создавал никаких веток. Я продолжал совершать в "мастер" филиал.
Ответы
Ответ 1
В Visual Studio 2015, если вы делаете Просмотр истории (из меню "Действия" на панели "Изменения" в Team Explorer):
![View History]()
Затем щелкните правой кнопкой мыши на коммите, который вас интересует:
![Right Click]()
Вы можете создать ветку оттуда:
![New branch]()
Я не вижу способа просто оформить коммит в Visual Studio.
Работая с командной строкой, вы можете сделать проверку SHA коммита, который вы хотите использовать:
git checkout 9eab01d9
Когда вы закончите, просто проверьте мастер снова:
git checkout master
Вы можете получить предупреждения о работе на отсоединенной головке, в этом случае вы можете временно создать ветку:
git checkout -b temp-branch-name 9eab01d9
Это хорошая идея, чтобы освоиться с командной строкой Git, инструмент Visual Studio идет вперед, но он упускает множество функций.
Ответ 2
Спасибо Мэтту Фриру за то, что он указал, что мой первоначальный ответ обнулит все решение до определенного коммита, тогда как вопрос заключался в том, как использовать конкретную версию одного файла при сохранении самой последней версии всего остального. Сохранение исходного содержимого поста внизу, на случай, если кто-то сочтет это полезным.
Чтобы сохранить все ваше решение не позднее, но использовать более старую версию отдельного файла:
Использование Visual Studio 2015, обновление 3:
Я добавлю скриншоты и отредактирую/переформатирую ответ, чтобы за ним было легче следовать, но я хотел получить исправленный ответ, в котором более точно рассматривается вопрос, пока у меня не будет времени вернуться к нему.
- Просмотр истории на ветке (Team Explorer → Филиалы → щелкните правой кнопкой мыши на ветке)
![View History on the branch View History on the branch]()
- Щелкните правой кнопкой мыши на желаемом коммите и выберите "Сброс" → "Сбросить и сохранить изменения" (--mixed). Ваш локальный код по-прежнему будет тем, что есть в последнем коммите, но все изменения, начиная с желаемого коммита, будут отображаться как ожидающие изменения в Team Explorer → Изменения. Ваш указатель ветки теперь находится на коммите, который вы сбросили, но код все еще остается в коммите, с которым вы начали (последний коммит).
- Перейдите в Team Explorer → Изменения, щелкните правой кнопкой мыши файл, для которого вы хотите использовать версию в желаемом коммите, и выберите "Отменить изменения...". Это вернет этот файл к коммиту, который вы сбросили, вернув к тому, что находится в этом коммите.
Теперь у вас будет последний из каждого файла в хранилище, за исключением файла, в котором вы только что отменили изменения. Теперь вы можете снова сбросить микширование на последнем коммите, чтобы увидеть только один файл, который вы используете в Team Explorer → Изменения старой версии, но если все, что вы пытаетесь сделать, это запустить решение, этот шаг не требуется.
Чтобы сбросить весь репозиторий решений/исходных текстов в конкретный коммит:
Использование Visual Studio 2015, обновление 3:
ВАЖНЫЙ
При таком подходе любые исходящие коммиты будут потеряны.
Обязательно выполните шаг 1 (нажмите любые исходящие коммиты)
- Убедитесь, что у вас нет исходящих коммитов - выполните Push, если у вас есть исходящие коммиты (* Team Explorer → Синхронизация → Исходящие коммиты)
![Make sure you don't have any outgoing commits - perform a Push, if you do have outgoing commits Make sure you don't have any outgoing commits - perform a Push, if you do have outgoing commits]()
- Просмотр истории на ветке (Team Explorer → Филиалы → щелкните правой кнопкой мыши на ветке)
![View History on the branch View History on the branch]()
-
Щелкните правой кнопкой мыши на желаемом коммите и выберите "Сброс" → "Сброс и удаление изменений" (--hard).
. В Team Explorer → Синхронизация, а затем в окне Просмотр истории вы получите входящие коммиты от желаемого коммита до последнего коммита в удаленной ветке, и ваш локальный код будет соответствовать желаемому коммиту.
-
Когда вы закончите, выполните команду Team Explorer → Синхронизация, чтобы перевести локальный филиал в последний коммит удаленного ветки.
Посмотрите этот отличный ответ, который объясняет команду "git reset" и разницу между --hard и --mixed.
Ответ 3
(Это работает как в VS2015, так и в VS2017.)
Я считаю, что это самый простой способ:
- В обозревателе решений откройте текущую версию вашего файла.
- В обозревателе решений щелкните правой кнопкой мыши файл и выберите "Просмотреть историю".
- В окне истории найдите коммит для версии, с которой вы хотите протестировать. Щелкните правой кнопкой мыши и выберите "Открыть". Появляется временный файл с содержимым нужной версии.
- Скопируйте содержимое этой версии (Ctrl-A Ctrl-C) и вставьте его поверх текущей текущей версии.
Теперь вы можете делать с этим файлом все, что захотите, а затем отменить ожидающие изменения, когда закончите.