Использование Git с Visual Studio [закрыто]

1455

Как давний пользователь Visual SourceSafe (и ненавистник) я обсуждал переход на SVN с коллегой; вместо этого он предложил использовать Git . Поскольку, по-видимому, его можно использовать как одноранговый без центрального сервера (мы являемся командой из 3 разработчиков).

Я не смог найти ничего об инструментах, которые интегрируют Git с Visual Studio, хотя - такая вещь существует?

Какие технологии доступны для использования Git с Visual Studio? И что мне нужно знать о том, как они отличаются, прежде чем я начну?

Херб Каудилл
источник
4
Я только добавил Git Source Control Provider для VS 2010, так что он все еще работает.
Wade73
3
Оформить заказ этого учебника из команды VS . Следующее обновление; Обновление 2 для VS 2012 выйдет в любой день. Вы также можете скачать предварительный просмотр технологии сообщества (CTP) для VS2012 здесь . В качестве альтернативы, если вы работаете в CMMI, Agile, Scrum 1/2 и т. Д., Вы можете подписаться на бесплатную учетную запись (как на общедоступном, так и на частном облачном хранилище) и пригласить участников (товарищей по команде, клиентов) в свой проект TFS tfs.visualstudio
Annie
3
Я использую Visual Studio и git уже два года. Я бы сказал, что лучшее решение этой проблемы - просто использовать отдельное приложение для управления версиями, например Atlassians SourceTree. Он бесплатный, простой в установке, имеет хороший графический интерфейс и удобен для пользователя, вы можете просматривать несколько репозиториев (например, различные проекты) так же, как вы просматриваете веб-страницы в Chrome, и, что наиболее важно, поддерживать несколько систем контроля версий. Попробуйте! Вы не будете разочарованы, уверяю вас!
Фази
2
Git поддерживается изначально, начиная с Visual Studio 2013
rustyx
17
Мне нравится, как 1342 человека проголосовали за этот вопрос, и какой-то идиот все равно приходит и закрывает его. Отлично, StackOverfolow .... Какое это имеет значение, если не соответствует критериям SO, если так много людей считают это полезным. Разве смысл этого сайта не в том, чтобы быть полезным?
thebunnyrules

Ответы:

1070

В январе 2013 года Microsoft объявила о добавлении полной поддержки Git во все свои продукты ALM. Они опубликовали плагин для Visual Studio 2012, который добавляет интеграцию управления исходным кодом Git.

Кроме того, существует проект под названием Git Extensions, который включает надстройки для Visual Studio 2005, 2008, 2010 и 2012, а также интеграцию с Windows Explorer. Он регулярно обновляется, и, использовав его в нескольких проектах, я нашел его очень полезным.

Другой вариант - Git Source Control Provider .

Джон Риммер
источник
9
ted.dennison: Согласно этой странице ( code.google.com/p/gitextensions ) это плагин VS 2005/2008.
Джонас
10
Чтобы исправить себя - источник размещен на Github, MSI нет.
Крис С
5
Я установил расширения git, он работает визуально в студии и не полностью интегрирован. Есть ли решение, которое позволяет регистрироваться - выходить из обозревателя решений?
Дани
4
Дани, кто-то работает над провайдером контроля версий
Джон Риммер
3
Есть ли варианты для VS 2012?
Земля Двигатель
202

Я использую Git с Visual Studio для моего порта буферов протокола к C #. Я не использую графический интерфейс - я просто держу командную строку открытой, как и Visual Studio.

По большей части это нормально - единственная проблема - когда вы хотите переименовать файл. И Git, и Visual Studio предпочли бы, чтобы они переименовали его. Я думаю, что переименование его в Visual Studio - это то, что нужно - просто будьте осторожны с тем, что вы делаете на стороне Git впоследствии. Хотя в прошлом это было немного болезненно, я слышал, что это должно быть довольно гладко на стороне Git, потому что он может заметить, что содержимое будет в основном таким же. (Обычно не совсем то же самое - вы склонны переименовывать файл при переименовании класса в IME.)

Но в принципе - да, работает нормально. Я новичок в Git, но я могу заставить его делать все, что мне нужно. Убедитесь, что у вас есть файл git ignore для bin и obj и * .user.

Джон Скит
источник
35
мерзавец должен быть в порядке с VS, делающим переименование. Для правильного отслеживания переименования в git log вам просто нужно быть уверенным, что вы вносите часть «remove» изменения в тот же коммит, что и часть «add». git add -A делает это легко, если ваш .gitignore обновлен.
CB Bailey
40
Я тоже новичок, и, честно говоря, предпочитаю использовать его из командной строки. Я бы немного испугался, чтобы перенести силу мерзавца в графический интерфейс, который пытается быть «умным» и совершать «магию» за моей спиной.
Hasen
1
Спасибо за совет. Я только что перешел на Git (и GitHub) и никогда не буду оглядываться назад. Мой клиент использует перформанс (тьфу!). Поэтому я планирую сделать одну проверку из выступления, выполнить мою работу с git, а затем проверить ее снова.
Марк Беквит
7
@CallMeLaNN: Вы делаете большое предположение, что у новичков в Git возникают трудности при использовании командной строки. Посмотрите на комментарий Хасана Дж от апреля 2009 года.
Джон Скит
Я обычно добавляю .user, * .suo, bin, obj,. и _ * в мой список игнорирования ... если есть что-то из вышеперечисленного, которое я хочу добавить, я все равно могу добавить его вручную.
Tracker1
93

Git Source Control Provider - это новый плагин, который интегрирует Git с Visual Studio.

yysun
источник
Есть ли шанс заставить его работать в 2005 году?
Art
3
Хорошо. TBH графический интерфейс этого именно то, что я искал, когда я искал графический интерфейс для git в VS 2010. Спасибо за публикацию этого. Другие ответы не то, что мне нужно. Они бедны по сравнению с VisualSVN.
JDPeckham
1
Я рекомендую посмотреть раздел обзора на marketplace.visualstudio.com/…, прежде чем принять решение установить его.
QMaster
53

Я немного изучил это на работе (как с Subversion, так и с Git). Visual Studio фактически имеет API интеграции управления исходным кодом, позволяющий интегрировать сторонние решения по управлению исходным кодом в Visual Studio. Тем не менее, большинство людей не беспокоится об этом по нескольким причинам.

Во-первых, API в значительной степени предполагает, что вы используете рабочий процесс с блокированной проверкой. В нем много хуков, которые либо дороги, либо реализуются, либо просто не имеют смысла, когда вы используете более современный рабочий процесс редактирования-слияния.

Второе (связанное с этим) заключается в том, что когда вы используете рабочий процесс edit-merge, который поощряют и Subversion, и Git, вам на самом деле не нужна интеграция с Visual Studio. Основная проблема интеграции SourceSafe с Visual Studio заключается в том, что вы (и редактор) с первого взгляда можете определить, какие файлы у вас есть, какие должны быть извлечены перед редактированием, а какие нет, даже если вы этого хотите. Тогда он может помочь вам сделать все, что нужно для контроля версий, когда вам нужно отредактировать файл. Ничто из этого даже не является частью типичного рабочего процесса Git.

Когда вы используете Git (или, как правило, SVN), все ваши взаимодействия контроля версий происходят либо до сеанса разработки, либо после него (после того, как у вас все работает и тестируется). В этот момент действительно не так уж сложно использовать другой инструмент. Вам не нужно постоянно переключаться назад и вперед.

ТЕД
источник
22
Ребята, вы когда-нибудь перемещали или переименовывали файлы / каталоги? Я начал использовать VisualSVN пару месяцев назад, и я никогда не мог вернуться.
JohnOpincar
10
@TED ​​Для меня это означает, что после долгой разработки вы должны помнить причины каждого изменения файла, пока не зарегистрируетесь. Если я работаю над чем-то и вижу что-то, что нужно исправить в несвязанной области, которую я хотел бы проверить, исправить, и проверить, зная, что я могу удалить это изменение из моей памяти. Я бы предпочел сделать это изнутри
Питер М
4
Плагин Git Extensions Visual Studio не пытается подключиться к старому школьному API управления исходным кодом, который Microsoft предоставила. Он очень хорошо подходит для рабочего процесса edit-merge и в основном просто добавляет commit / push / pull и историю файлов прямо в IDE. Наличие истории файлов в контекстном меню чрезвычайно полезно!
Джейкоб Стэнли
3
Я не согласен, главным образом, потому что выход из визуальной студии, чтобы проверить, поощряет более длительное время между регистрациями. Слишком много людей уже оформляют заказ в начале дня и не регистрируются до конца (или хуже дней спустя). Интеграция с visual studio позволяет вам постоянно поддерживать управление исходным кодом в рабочем процессе.
Крис МакГрат,
8
Интеграция управления исходным кодом Visual Studio начиная с VS2005 (VS2003?) Не особенно склонна к модели проверки и проверки. Посмотрите на АнхСВН например. Я предпочитаю интеграцию VS, потому что тогда переименования и т. Д. Более плавные.
Роджер Липскомб
38

Я считаю, что Git, работая над целыми деревьями, извлекает меньшую выгоду от интеграции IDE, чем инструменты управления исходным кодом, которые основаны на файлах или следуют шаблону checkout-edit-commit. Конечно, есть случаи, когда было бы неплохо нажать на кнопку, чтобы провести какое-то изучение истории, но я не очень скучаю по этому.

Реально нужно сделать так, чтобы ваш файл .gitignore был полон вещей, которых не должно быть в общем хранилище. Мои обычно содержат (среди прочего) следующее:

*.vcproj.*.user
*.ncb
*.aps
*.suo

но это в значительной степени предвзято относится к C ++, практически не используя функциональность в стиле мастера классов.

Мой шаблон использования выглядит примерно так:

  1. Код, код, код в Visual Studio.

  2. Когда все в порядке (разумная промежуточная точка для фиксации кода, переключитесь на Git, внесите изменения и просмотрите различия. Если что-то явно не так, переключитесь обратно в Visual Studio и исправьте, в противном случае подтвердите.

Любое слияние, ветвление, перебазирование или другие интересные вещи SCM легко сделать в Git из командной строки. Visual Studio обычно довольно довольна тем, что происходит под ней, хотя иногда может потребоваться перезагрузить некоторые проекты, если вы значительно изменили файлы проекта.

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

CB Bailey
источник
11
Вы этого не сделаете, у вас обязательно должен быть файл проекта под контролем версий.
CB Bailey
1
Это очень важно - восстанавливаться после того, как вы забыли включить что-то в .gitignore, как только вы начали делать коммиты и ветвление, по меньшей мере, болезненно ...
Benjol
3
@ Бенджол: Это не должно быть так больно. Вам просто нужно git rm <file>и echo <file> >>.gitignore; git add .gitignoreна кончиках ваших активных веток. После внесения изменений вы всегда можете выбрать исправление для других веток.
CB Bailey
1
@Charles Bailey, посмотрите мои приключения в этом вопросе: stackoverflow.com/questions/1887049/…
Benjol
9
@ Майк Браун: он игнорирует файлы * .user, которые являются пользовательскими настройками.
Срджан Йовчич
31

Microsoft недавно анонсировала Git для Visual studio 2012 (обновление 2). Я еще не играл с этим, но это видео выглядит многообещающим.

Вот краткое руководство по использованию Git из Visual Studio 2012.

Чандрамульсваран Равичандра
источник
Я рекомендую этот, так как это официальный продукт Microsoft. и он может установить на VS 2012 Express и
Cheung
28

Также не пропустите TortoiseGit ... https://tortoisegit.org/

tonyo
источник
Да, это хороший интерфейс, но нет, он не интегрируется с Visual Studio.
Скотт Риппи
3
Поставщик контроля исходного кода Git добавляет команды TortoiseGit в контекстное меню в Visual Studio.
HotN
26

Есть инструменты Visual Studio для Git от Microsoft. Он поддерживает только Visual Studio 2012 (обновление 2).

Шэн Цзян 蒋 晟
источник
для visual studio 2012 это лучший ответ. Похоже, что они вложили много усилий в реализацию, и, по моему опыту, все работает как положено!
RoelF
2
Я не смог выяснить, как настроить «Visual Studio Tools for Git» Microsoft для использования частного репозитория Github. Вы видели какую-либо документацию или учебники по этому вопросу?
golliher
Я рекомендую посмотреть раздел обзора на marketplace.visualstudio.com/…, прежде чем принять решение установить его.
QMaster
18

Поддержка Git, выполняемая Microsoft в Visual Studio, достаточно хороша для основной работы (commit / fetch / merge and push). Мой совет просто избегать этого ...

Я очень предпочитаю GitExtensions (или в меньшей пропорции SourceTree ). Потому что для меня действительно важно понять DAG, как работает Git. И вы намного больше осведомлены о том, что сделали другие участники вашего проекта!

В Visual Studio вы не можете быстро увидеть разницу между файлами или коммитом, ни (добавить в индекс) и зафиксировать только часть изменений. Просматривать свою историю тоже нехорошо ... Все это заканчивается болезненным опытом!

И, например, GitExtensions включает в себя интересные плагины: фоновая выборка, GitFlow, ... и теперь непрерывная интеграция !

Для пользователей Visual Studio 2015 Git обретает форму, если вы установите расширение GitHub. Но внешний инструмент все же лучше ;-)

Philippe
источник
GitExtensions работает на вас в 2015 году? меню у меня не работает github.com/gitextensions/gitextensions/issues/2815
raklos
15

TortoiseGit созрел, и я рекомендую его, особенно если вы использовали TortoiseSVN.

SurfRat
источник
14

Самое простое решение, которое на самом деле работает достаточно хорошо, - это добавить команды TortoiseGit в качестве внешних инструментов.

Решение для добавления панели инструментов Git (TortoiseGit) в Visual Studio

DalSoft
источник
1
Вы также можете просто вызвать git прямо из консоли диспетчера пакетов, которая является просто командной строкой powershell. Или ... superuser.com/a/879561/135416
drzaus
10

По словам Джона Риммера, вы можете использовать GitExtensions. GitExtensions работает в Visual Studio 2005 и Visual Studio 2008, он также работает в Visual Studio 2010, если вы вручную копируете и конфигурируете файл .Addin.

Henk
источник
Неплохо. Интересно, кто тестирует и одобряет пользовательский интерфейс ... сообщения очень сбивают с толку ... мое единственное предположение, что они поспешили выпустить его и посмотреть, что / почему пользователь жалуется.
Рамнз
10

В настоящее время есть два варианта управления исходным кодом Git в Visual Studio (2010 и 12):

  1. Git Source Control Provider
  2. Microsoft Git Provider

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

Примечание . Какое бы расширение вы не использовали, убедитесь, что вы включили его, Tools -> Options -> Source control -> Plugin Selectionчтобы оно работало.

Tarun
источник