Използване на Git с Visual Studio

Като дългогодишен потребител (и мразещ) на Visual SourceSafe обсъждах с колега преминаването към SVN; той предложи вместо това да се използва Git. Тъй като очевидно може да се използва като peer-to-peer без централен сървър (ние сме екип от 3-ма разработчици).

Не успях обаче да намеря нищо за инструменти, които интегрират Git с Visual Studio - съществува ли такова нещо?

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

Решение

През януари 2013 г. Microsoft обяви, че добавя пълна поддръжка на Git във всички свои ALM продукти. Те публикуваха приставка за Visual Studio 2012, която добавя интеграция на Git за управление на източника.

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

Друга възможност е Git Source Control Provider.

Коментари (21)

Използвам Git с Visual Studio за пренасянето на Protocol Buffers на C#. Не използвам графичния потребителски интерфейс - просто държа отворен командния ред, както и Visual Studio.

В по-голямата си част всичко е наред - единственият проблем е, когато искате да преименувате даден файл. И Git, и Visual Studio предпочитат те да са тези, които да го преименуват. Мисля обаче, че преименуването във Visual Studio е правилният начин - просто внимавайте какво правите след това в Git. Въпреки че в миналото това е било малко болезнено, чувал съм, че всъщност би трябвало да е доста безпроблемно от страна на Git, защото той може да забележи, че съдържанието ще е предимно същото. (Обикновено не е напълно същото - обикновено преименувате файла, когато преименувате класа, ИМЕ.)

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

Коментари (13)

Смятам, че 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, но до известна степен това е въпрос на вкус.

Коментари (10)