Folosind Git cu Visual Studio

După o lungă perioadă de timp Visual SourceSafe utilizatorul (si ura) am discutat despre trecerea la SVN cu un coleg, el a sugerat folosirea Git în loc. Deoarece, aparent, acesta poate fi folosit ca peer-to-peer, fără un server central (suntem 3 echipa de dezvoltator).

Nu am fost în stare să găsească nimic despre instrumente care integrează Git cu Visual Studio, deși - nu un astfel de lucru exista?

Care sunt tehnologiile disponibile pentru utilizarea Git cu Visual Studio? Și ce trebuie să știți despre modul în care acestea diferă înainte de a începe?

Comentarii la întrebare (9)
Soluția

În ianuarie 2013, Microsoft a a anuntat că acestea sunt adăugarea full Git sprijin în toate ALM produse. Au publicat un plugin pentru Visual Studio 2012, care adaugă Git de comandă a sursei de integrare.

Alternativ, există un proiect numit Git Extensiile, care include add-in pentru Visual Studio 2005, 2008, 2010 și 2012, precum și Windows Explorer integrare. L's actualizată în mod regulat și au folosit-o pe o serie de proiecte, am'am găsit-o foarte util.

O altă opțiune este de Git Sursa Furnizorul de Control.

Comentarii (21)

Eu folosesc Git cu Visual Studio pentru a-mi port de Protocol Tampoane pentru C#. Eu nu't de a folosi GUI - am păstra doar o linie de comandă deschis, precum și Visual Studio.

Pentru cea mai mare parte's bine - singura problemă este atunci când doriți să-l redenumiți un fișier. Ambele Git si Visual Studio-ar mai degrabă că au fost acela de a-l redenumi. Cred că redenumirea în Visual Studio este calea de a merge, deși - doar fii atent ce faci tu la Git parte după aceea. Deși acest lucru a fost un pic de o durere în trecut, am'am auzit ca de fapt ar trebui să fie destul de fără sudură pe Git parte, pentru că se poate observa că conținutul va fi în mare parte aceleași. (Nu în întregime la fel, de obicei - ai tendinta de a redenumi un fișier, atunci când te're redenumirea clasa, IME.)

Dar practic - da, funcționează bine. Am'm un Git newbie, dar nu pot să fac tot ce am nevoie. Asigurați-vă că aveți un git ignora fișier bin și obj, și *.utilizator.

Comentarii (13)

Git Sursa Furnizorul de Control este noul plug-in care integrează Git cu Visual Studio.

Comentarii (3)

Am'am cercetat un pic la locul de muncă (atât cu Subversiune și Git). Visual Studio are, de fapt, o sursă de control integrare API pentru a permite să se integreze în al treilea-petrecere sursă de soluții de control în Visual Studio. Cu toate acestea, cei mai mulți oameni don't deranjez cu ea pentru un cuplu de motive.

Primul este că API-ul destul de mult presupune că sunt folosind-o blocat-checkout flux de lucru. Există o mulțime de cârlige în ea, care sunt oricum scumpe să pună în aplicare, sau pur și simplu nu au sens atunci când sunt utilizați mai moderne edit-îmbinare de flux de lucru.

Cea de-a doua (care este legat) este că atunci când utilizați edit-merge flux de lucru care ambele Subversiune și Git încuraja, nu't într-adevăr nevoie Visual Studio integrare. Principalul criminal lucru despre SourceSafe's de integrare cu Visual Studio este că tu (și editor) pot spune dintr-o privire care fișierele proprii, care trebuie să fie verificat înainte de a putea edita, și de care nu se poate verifica afară chiar dacă doriți să. Apoi acesta vă poate ajuta să facem orice revizuire de control voodoo aveți nevoie pentru a face atunci când doriți să editați un fișier. Nici unul dintre care este chiar parte dintr-un tipic Git flux de lucru.

Atunci când utilizați Git (sau SVN, de obicei), revizuire-control interacțiuni avea loc fie înainte de dezvoltarea ta sesiune, sau după acesta (odată ce ai totul de lucru și testate). În acel moment chiar nu - 't prea mult de o durere de a utiliza un instrument diferit. Nu't în mod constant a fi nevoie pentru a comuta înainte și înapoi.

Comentarii (9)

Am găsi că Git, lucru pe copaci întregi ca, beneficii mai puțin de IDE integrare decât sursa instrumente de control, care sunt fie bazate pe fișiere sau să urmeze un checkout-edit-comite model. Desigur, există cazuri în care acesta poate fi frumos să faceți clic pe un buton pentru a face unele de istorie examinare, dar nu't dor foarte mult.

Real trebuie să faceți este să obțineți .gitignore dosar plin de lucruri pe care ar trebui't fi într-un depozit comun. A mea, în general, conține (printre altele) următoarele:

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

dar acest lucru este puternic C++ părtinitoare, cu puțin sau nici un folos de orice clasa, stil wizard funcționalitate.

Meu model de utilizare este ceva de genul următor.

  1. Cod, cod, cod în Visual Studio.

  2. Când fericit (sensibil punct intermediar pentru a comite cod, a comuta la Git, schimbările de scenă și de revizuire diff. Dacă ceva's, evident, greșit a comuta înapoi la Visual Studio și să stabilească, în caz contrar se angajeze.

Orice merge, ramură, rebazare sau alte fantezie CSM lucruri este ușor de a face la Git de la promptul de comandă. Visual Studio este în mod normal destul de fericit cu lucrurile care se schimbă sub ea, deși uneori poate fi necesar să reîncărcați unele proiecte daca'am modificat fișiere de proiect în mod semnificativ.

Mi se pare că utilitatea Git depășește orice inconvenient minor de a nu avea full IDE integrare, dar este într-o oarecare măsură, o chestiune de gust.

Comentarii (10)

Microsoft a anunțat Git pentru Visual studio 2012 (update 2) recent. Nu am jucat în jurul cu ea încă, dar acest video arată promițător.

Aici este o scurtă tutorial despre cum să folosiți Git de la Visual Studio 2012.

Comentarii (1)

De asemenea, don't dor de TortoiseGit... https://tortoisegit.org/

Comentarii (2)

Nu's a Visual Studio Tools pentru Git de către Microsoft. Se acceptă numai Visual Studio 2012 (update 2) totuși.

Comentarii (3)

Visual Studio 2013 suportă Git.

Vezi anunț oficial.

Comentarii (0)

Git suport facut de Microsoft Visual Studio este doar suficient de bun pentru locul de muncă de bază (comite/aduce/fuziona și de a împinge). Sfatul meu este doar sa-l evite...

Am foarte prefer GitExtensions (sau, în mai mică proporție SourceTree). Pentru a vedea DAG este pentru mine foarte important să înțelegem cât de Git funcționează. Și ești mult mai conștient de ceea ce ceilalți participanți la proiect au făcut!

În Visual Studio, puteți't de repede se vedea diferența între fișierele sau comis-o, nici (se adauga la index) și comite doar o parte din modificări. Răsfoiți istoria nu este bine... Toate care se termină într-o experiență dureroasă!

Și, de exemplu, GitExtensions este la pachet cu plugin-uri interesante: fundal aduce, GitFlow,... și acum, continuous integration!

Pentru utilizatorii de Visual Studio 2015, Git este de a lua formă dacă instalați GitHub extensie. Dar un instrument extern este încă mai bine ;-)

Comentarii (1)

TortoiseGit s-a maturizat și l-am recomanda mai ales dacă ați folosit TortoiseSVN.

Comentarii (0)

Cel mai nou versiune de Git Extensiile susține Visual Studio 2010 acum (împreună cu Visual Studio 2008 și Visual Studio 2005).

Am găsit-o să fie destul de ușor de utilizat, cu Visual Studio 2008 și interfața pare a fi același în Visual Studio 2010.

Comentarii (0)

Cea mai simplă soluție, care de fapt funcționează destul de bine este să adăugați TortoiseGit comenzi ca instrumente externe.

https://stackoverflow.com/questions/6169851/solution-to-adding-a-git-tortoisegit-toolbar-to-visual-studio

Comentarii (1)

În prezent, există 2 opțiuni pentru Git Sursă de Control în Visual Studio (2010 și 12):

  1. Git Sursă de Control al Furnizorului
  2. Microsoft Git Provider

Am încercat amândoi și-au găsit 1 o să fie mult mai matur, și are mai multe caracteristici. De exemplu, se joacă frumos cu ambele broască țestoasă git, git extensii, și chiar expus caracteristicile lor.

Notă: Indiferent de extensia utilizați, asigurați-vă că activați din Tools -> Opțiuni -> Sursa de control -> Plugin de Selecție pentru a funcționa.

Comentarii (0)

Ca mantioned de Jon Rimmer, puteți utiliza GitExtensions. GitExtensions face de muncă în Visual Studio 2005 și Visual Studio 2008, ea are, de asemenea, de lucru în Visual Studio 2010, dacă copiați manual și config .Addin.

Comentarii (1)