Как вы получаете конкретную версию из 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:

Я добавлю скриншоты и отредактирую/переформатирую ответ, чтобы за ним было легче следовать, но я хотел получить исправленный ответ, в котором более точно рассматривается вопрос, пока у меня не будет времени вернуться к нему.

  1. Просмотр истории на ветке (Team Explorer → Филиалы → щелкните правой кнопкой мыши на ветке) View History on the branch
  2. Щелкните правой кнопкой мыши на желаемом коммите и выберите "Сброс" → "Сбросить и сохранить изменения" (--mixed). Ваш локальный код по-прежнему будет тем, что есть в последнем коммите, но все изменения, начиная с желаемого коммита, будут отображаться как ожидающие изменения в Team Explorer → Изменения. Ваш указатель ветки теперь находится на коммите, который вы сбросили, но код все еще остается в коммите, с которым вы начали (последний коммит).
  3. Перейдите в Team Explorer → Изменения, щелкните правой кнопкой мыши файл, для которого вы хотите использовать версию в желаемом коммите, и выберите "Отменить изменения...". Это вернет этот файл к коммиту, который вы сбросили, вернув к тому, что находится в этом коммите.

Теперь у вас будет последний из каждого файла в хранилище, за исключением файла, в котором вы только что отменили изменения. Теперь вы можете снова сбросить микширование на последнем коммите, чтобы увидеть только один файл, который вы используете в Team Explorer → Изменения старой версии, но если все, что вы пытаетесь сделать, это запустить решение, этот шаг не требуется.


Чтобы сбросить весь репозиторий решений/исходных текстов в конкретный коммит:

Использование Visual Studio 2015, обновление 3:

ВАЖНЫЙ

При таком подходе любые исходящие коммиты будут потеряны.

Обязательно выполните шаг 1 (нажмите любые исходящие коммиты)

  1. Убедитесь, что у вас нет исходящих коммитов - выполните Push, если у вас есть исходящие коммиты (* Team Explorer → Синхронизация → Исходящие коммиты) Make sure you don't have any outgoing commits - perform a Push, if you do have outgoing commits
  2. Просмотр истории на ветке (Team Explorer → Филиалы → щелкните правой кнопкой мыши на ветке) View History on the branch
  3. Щелкните правой кнопкой мыши на желаемом коммите и выберите "Сброс" → "Сброс и удаление изменений" (--hard). Right-click on the desired commit and select "Reset → Reset and Delete Changes (--hard). В Team Explorer → Синхронизация, а затем в окне Просмотр истории вы получите входящие коммиты от желаемого коммита до последнего коммита в удаленной ветке, и ваш локальный код будет соответствовать желаемому коммиту.

  4. Когда вы закончите, выполните команду Team Explorer → Синхронизация, чтобы перевести локальный филиал в последний коммит удаленного ветки.

Посмотрите этот отличный ответ, который объясняет команду "git reset" и разницу между --hard и --mixed.

Ответ 3

(Это работает как в VS2015, так и в VS2017.)

Я считаю, что это самый простой способ:

  1. В обозревателе решений откройте текущую версию вашего файла.
  2. В обозревателе решений щелкните правой кнопкой мыши файл и выберите "Просмотреть историю".
  3. В окне истории найдите коммит для версии, с которой вы хотите протестировать. Щелкните правой кнопкой мыши и выберите "Открыть". Появляется временный файл с содержимым нужной версии.
  4. Скопируйте содержимое этой версии (Ctrl-A Ctrl-C) и вставьте его поверх текущей текущей версии.

Теперь вы можете делать с этим файлом все, что захотите, а затем отменить ожидающие изменения, когда закончите.