Verwenden von Git mit Visual Studio [geschlossen]

1455

Als langjähriger Visual SourceSafe- Benutzer (und Hasser) diskutierte ich mit einem Kollegen über den Wechsel zu SVN . er schlug stattdessen vor, Git zu verwenden. Da es anscheinend als Peer-to-Peer ohne zentralen Server verwendet werden kann (wir sind ein 3-Entwickler-Team).

Ich konnte jedoch nichts über Tools finden, die Git in Visual Studio integrieren - gibt es so etwas?

Welche Technologien stehen für die Verwendung von Git mit Visual Studio zur Verfügung? Und was muss ich wissen, wie sie sich unterscheiden, bevor ich anfange?

Herb Caudill
quelle
4
Ich habe gerade den Git Source Control Provider für VS 2010 hinzugefügt, damit er immer noch funktioniert.
Wade73
3
Testen Sie dieses Tutorial vom VS-Team . Das nächste Update; Update 2 für VS 2012 kommt jeden Tag. Sie können auch die Community Technology Preview (CTP) für VS2012 von hier herunterladen . Wenn Sie sich für CMMI, Agile, Scrum 1/2 usw. interessieren, können Sie sich alternativ für ein kostenloses Konto (sowohl öffentliche als auch private Cloud-Instanzen) anmelden und Mitglieder (Teammitglieder, Kunden) zu Ihrem
Annie
3
Ich benutze Visual Studio und Git seit zwei Jahren. Ich würde sagen, dass die beste Lösung für dieses Problem darin besteht, nur eine separate Quellcodeverwaltungsanwendung wie Atlassians SourceTree zu verwenden. Es ist kostenlos, einfach zu installieren, hat eine gute Benutzeroberfläche und ist benutzerfreundlich. Sie können mehrere Repositorys (auch bekannt als verschiedene Projekte) durchsuchen, genau wie Sie in Chrome im Internet surfen würden, und vor allem mehrere Versionsverwaltungssysteme unterstützen. Versuche es! Sie werden nicht enttäuscht sein, das versichere ich Ihnen!
Fazi
2
Git wird nativ ab Visual Studio 2013 unterstützt
Rustyx
17
Ich liebe es, wie 1342 Leute diese Frage positiv bewertet haben und ein Idiot kommt und schließt sie trotzdem. Gut gemacht, StackOverfolow ... Was macht es aus, wenn es nicht den Kriterien von SO entspricht, wenn so viele Leute es so hilfreich finden? Ist es nicht der Sinn dieser Website, hilfreich zu sein?
Thebunnyrules

Antworten:

1070

Im Januar 2013 gab Microsoft bekannt, dass alle ALM-Produkte von Git unterstützt werden. Sie haben ein Plugin für Visual Studio 2012 veröffentlicht, das die Integration der Git-Quellcodeverwaltung hinzufügt.

Alternativ gibt es ein Projekt namens Git Extensions , das Add-Ins für Visual Studio 2005, 2008, 2010 und 2012 sowie die Windows Explorer-Integration enthält. Es wird regelmäßig aktualisiert und nachdem ich es für einige Projekte verwendet habe, fand ich es sehr nützlich.

Eine weitere Option ist Git Source Control Provider .

Jon Rimmer
quelle
9
ted.dennison: Laut dieser Seite ( code.google.com/p/gitextensions ) handelt es sich um ein VS 2005/2008 Plugin.
Jonas
10
Um mich zu korrigieren - die Quelle wird auf Github gehostet, die MSIs nicht.
Chris S
5
Ich habe Git-Erweiterungen installiert, es funktioniert "von" Visual Studio und ist nicht vollständig integriert. Gibt es eine Lösung, die das Ein- und Auschecken aus dem Projektmappen-Explorer ermöglicht?
Dani
4
Dani, jemand arbeitet an einem Git-Versionsverwaltungsanbieter für VS, der eine etwas tiefere Integrationsstufe zu bieten scheint: gitscc.codeplex.com
Jon Rimmer
3
Gibt es Optionen für VS 2012?
Earth Engine
202

Ich verwende Git mit Visual Studio für meinen Port von Protokollpuffern nach C #. Ich benutze die GUI nicht - ich halte nur eine Befehlszeile offen sowie Visual Studio.

Zum größten Teil ist es in Ordnung - das einzige Problem ist, wenn Sie eine Datei umbenennen möchten. Sowohl Git als auch Visual Studio möchten lieber, dass sie es umbenennen. Ich denke, dass das Umbenennen in Visual Studio der richtige Weg ist - seien Sie vorsichtig, was Sie danach auf der Git-Seite tun. Obwohl dies in der Vergangenheit ein bisschen schmerzhaft war, habe ich gehört, dass es auf der Git-Seite eigentlich ziemlich nahtlos sein sollte, da es feststellen kann, dass der Inhalt größtenteils der gleiche sein wird. (Normalerweise nicht ganz dasselbe - Sie neigen dazu, eine Datei umzubenennen, wenn Sie die Klasse IME umbenennen.)

Aber im Grunde - ja, es funktioniert gut. Ich bin ein Git-Neuling, aber ich kann es dazu bringen, alles zu tun, was ich brauche. Stellen Sie sicher, dass Sie eine Git-Ignorierdatei für bin und obj und * .user haben.

Jon Skeet
quelle
35
Git sollte in Ordnung sein, wenn VS die Umbenennung vornimmt. Für eine gute Nachbenennungsverfolgung im Git-Protokoll müssen Sie nur sicherstellen, dass Sie den Teil "Entfernen" der Änderung im selben Commit wie den Teil "Hinzufügen" bereitstellen. git add -A macht dies einfach, wenn Ihr .gitignore auf dem neuesten Stand ist.
CB Bailey
40
Ich bin auch ein Git-Neuling, und um die Wahrheit zu sagen , benutze ich es lieber über die Kommandozeile. Ich hätte ein bisschen Angst, mit der Git-Power einer GUI umzugehen, die versucht, "clever" zu sein und hinter meinem Rücken etwas "Magie" zu üben.
hasen
1
Danke für den Hinweis. Ich bin gerade zu Git (und Github) gezogen und werde nie zurückblicken. Mein Client verwendet perforce (ugh!). Mein Plan ist es also, einen Checkout aus Perforce durchzuführen, meine Arbeit mit Git zu erledigen und ihn dann wieder einzuchecken.
Mark Beckwith
7
@CallMeLaNN: Sie machen dort eine große Annahme, dass Git-Neulinge Schwierigkeiten haben, die Befehlszeile zu verwenden. Schauen Sie sich den Kommentar von hasan j vom April 2009 an.
Jon Skeet
Normalerweise füge ich .user, * .suo, bin, obj ,. und _ * zu meiner Ignorierliste ... Wenn ich eines der oben genannten Elemente hinzufügen möchte, kann ich es trotzdem manuell hinzufügen.
Tracker1
93

Git Source Control Provider ist ein neues Plug-In, das Git in Visual Studio integriert.

Yysun
quelle
Gibt es eine Chance, dass es 2005 funktioniert?
Art
3
Gut. TBH Die grafische Oberfläche ist genau das, wonach ich gesucht habe, als ich in VS 2010 nach einer GUI für git gesucht habe. Vielen Dank, dass Sie dies gepostet haben. Die anderen Antworten sind nicht das, was ich brauche. Sie sind im Vergleich zu VisualSVN schlecht.
JDPeckham
1
Ich empfehle, den Überprüfungsbereich unter marketark.visualstudio.com/… zu lesen, bevor Sie sich für die Installation entscheiden.
QMaster
53

Ich habe mich bei der Arbeit ein wenig damit beschäftigt (sowohl mit Subversion als auch mit Git). Visual Studio verfügt über eine API zur Integration der Quellcodeverwaltung, mit der Sie Quellcodeverwaltungslösungen von Drittanbietern in Visual Studio integrieren können. Die meisten Leute kümmern sich jedoch aus mehreren Gründen nicht darum.

Das erste ist, dass die API so ziemlich davon ausgeht, dass Sie einen Workflow mit gesperrtem Checkout verwenden. Es gibt viele Hooks, deren Implementierung entweder sehr teuer ist oder die einfach keinen Sinn ergeben, wenn Sie den moderneren Workflow zum Bearbeiten und Zusammenführen verwenden.

Das zweite (was damit zusammenhängt) ist, dass Sie die Visual Studio-Integration nicht wirklich benötigen , wenn Sie den von Subversion und Git empfohlenen Workflow zum Bearbeiten und Zusammenführen verwenden . Das Wichtigste an der Integration von SourceSafe in Visual Studio ist, dass Sie (und der Editor) auf einen Blick erkennen können, welche Dateien Sie besitzen, welche vor dem Bearbeiten ausgecheckt werden müssen und welche Sie nicht auschecken können, selbst wenn Sie möchten. Dann kann es Ihnen helfen, das Voodoo zur Revisionskontrolle auszuführen, das Sie zum Bearbeiten einer Datei benötigen. Nichts davon ist Teil eines typischen Git-Workflows.

Wenn Sie Git (oder normalerweise SVN) verwenden, finden Ihre Revisionskontrollinteraktionen entweder vor oder nach Ihrer Entwicklungssitzung statt (sobald alles funktioniert und getestet wurde). Zu diesem Zeitpunkt ist es wirklich nicht allzu schmerzhaft, ein anderes Werkzeug zu verwenden. Sie müssen nicht ständig hin und her wechseln.

TED
quelle
22
Verschiebt oder benennt ihr niemals Dateien / Verzeichnisse um? Ich habe vor ein paar Monaten angefangen, VisualSVN zu verwenden, und konnte nie mehr zurückkehren.
JohnOpincar
10
@TED ​​Für mich bedeutet dies, dass Sie sich nach einer langen Entwicklung die Gründe für jede Dateiänderung merken müssen, bis Sie einchecken. Wenn ich an etwas arbeite und etwas sehe, das in einem nicht verwandten Bereich repariert werden muss, den ich gerne auschecke, Korrigieren Sie und überprüfen Sie, ob ich diese Änderung aus meinem Gedächtnis löschen kann. Ich mache das lieber innerhalb von VS
Peter M
4
Das Visual Studio-Plugin von Git Extensions versucht nicht, sich in die von Microsoft bereitgestellte Quellcodeverwaltungs-API für gesperrte Kassen der alten Schule einzugliedern. Es eignet sich sehr gut für einen Edit-Merge-Workflow und fügt im Grunde nur Commit / Push / Pull und Dateiversionsverlauf direkt in die IDE ein. Der Dateiversionsverlauf im Kontextmenü ist äußerst nützlich!
Jacob Stanley
3
Ich bin nicht einverstanden, vor allem, weil das Verlassen des Visual Studios zum Einchecken zu längeren Zeiten zwischen den Eincheckvorgängen führt. Zu viele Leute checken bereits zu Beginn des Tages aus und checken erst am Ende (oder schlimmer noch Tage später) ein. Durch die Integration in Visual Studio können Sie die Quellcodeverwaltung ständig in Ihrem Workflow behalten.
Chris McGrath
8
Die Integration der Visual Studio-Quellcodeverwaltung ab VS2005 (VS2003?) Neigt nicht besonders zu einem Checkout-Checkin-Modell. Schauen Sie sich zum Beispiel AnkhSVN an. Ich bevorzuge die VS-Integration, weil dann Umbenennungen usw. reibungsloser sind.
Roger Lipscombe
38

Ich finde, dass Git, das an ganzen Bäumen arbeitet, weniger von der IDE-Integration profitiert als Tools zur Quellcodeverwaltung, die entweder dateibasiert sind oder einem Checkout-Edit-Commit-Muster folgen. Natürlich gibt es Fälle, in denen es schön sein kann, auf eine Schaltfläche zu klicken, um eine Geschichtsprüfung durchzuführen, aber das vermisse ich nicht sehr.

Das eigentliche Muss ist, Ihre .gitignore-Datei mit den Dingen zu füllen, die sich nicht in einem gemeinsam genutzten Repository befinden sollten. Meine enthalten im Allgemeinen (unter anderem) Folgendes:

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

Dies ist jedoch stark C ++ voreingenommen, da keine oder nur wenige Funktionen des Klassenassistenten verwendet werden.

Mein Nutzungsmuster ist ungefähr so.

  1. Code, Code, Code in Visual Studio.

  2. Wenn Sie zufrieden sind (sinnvoller Zwischenpunkt zum Festschreiben von Code, wechseln Sie zu Git, führen Sie Änderungen durch und überprüfen Sie Unterschiede. Wenn etwas offensichtlich falsch ist, wechseln Sie zurück zu Visual Studio und beheben Sie es, andernfalls legen Sie fest.

Alle Zusammenführungen, Verzweigungen, Neueinstellungen oder andere ausgefallene SCM-Aufgaben können in Git einfach über die Eingabeaufforderung ausgeführt werden. Visual Studio ist normalerweise ziemlich zufrieden mit Änderungen, obwohl es manchmal einige Projekte neu laden muss, wenn Sie die Projektdateien erheblich geändert haben.

Ich finde, dass die Nützlichkeit von Git die kleinen Unannehmlichkeiten überwiegt, wenn keine vollständige IDE-Integration vorhanden ist, aber es ist bis zu einem gewissen Grad Geschmackssache.

CB Bailey
quelle
11
Sie sollten Ihre Projektdatei auf jeden Fall unter Versionskontrolle haben.
CB Bailey
1
Dies ist sehr wichtig - es ist gelinde gesagt schmerzhaft, sich von dem Vergessen zu erholen, etwas in .gitignore aufzunehmen, sobald Sie mit dem Festschreiben und Verzweigen begonnen haben ...
Benjol
3
@ Benjol: Es sollte nicht so schmerzhaft sein. Sie müssen nur git rm <file>und echo <file> >>.gitignore; git add .gitignoreauf die Tipps Ihrer aktiven Filialen. Sobald Sie die Änderung festgeschrieben haben, können Sie den Fix jederzeit auf andere Zweige übertragen.
CB Bailey
1
@ Charles Bailey, sehen Sie meine Abenteuer in dieser Frage: stackoverflow.com/questions/1887049/…
Benjol
9
@ Mike Brown: Er ignoriert * .user-Dateien, die benutzerspezifische Einstellungen sind.
Srdjan Jovcic
31

Microsoft hat kürzlich Git für Visual Studio 2012 (Update 2) angekündigt . Ich habe noch nicht damit herumgespielt, aber dieses Video sieht vielversprechend aus.

Hier finden Sie eine kurze Anleitung zur Verwendung von Git aus Visual Studio 2012.

Chandramouleswaran Ravichandra
quelle
Ich empfehle dieses Produkt, da es sich um ein offizielles Microsoft-Produkt handelt. und es kann auf VS 2012 Express und
Cheung
28

Verpassen Sie auch nicht TortoiseGit ... https://tortoisegit.org/

Tonyo
quelle
Ja, dies ist eine gute Benutzeroberfläche, aber nein, sie lässt sich nicht in Visual Studio integrieren.
Scott Rippey
3
Git Source Control Provider fügt dem Kontextmenü in Visual Studio TortoiseGit-Befehle hinzu.
HotN
26

Es gibt Visual Studio Tools für Git von Microsoft. Es wird jedoch nur Visual Studio 2012 (Update 2) unterstützt.

Sheng Jiang 蒋 晟
quelle
Für Visual Studio 2012 ist dies die beste Antwort. Es scheint, dass sie viel Aufwand in die Implementierung gesteckt haben, und meiner Erfahrung nach funktioniert es wie erwartet!
RoelF
2
Ich konnte nicht herausfinden, wie "Visual Studio Tools for Git" von Microsoft für die Verwendung eines privaten Github-Repos konfiguriert wird. Haben Sie dazu Dokumentationen oder Tutorials gesehen?
Golliher
Ich empfehle, den Überprüfungsbereich unter marketark.visualstudio.com/… zu lesen, bevor Sie sich für die Installation entscheiden.
QMaster
18

Die Git-Unterstützung von Microsoft in Visual Studio ist gerade gut genug für grundlegende Arbeiten (Commit / Fetch / Merge und Push). Mein Rat ist nur, es zu vermeiden ...

Ich bevorzuge GitExtensions (oder in geringerem Anteil SourceTree ). Weil es für mich sehr wichtig ist , die DAG zu sehen, um zu verstehen, wie Git funktioniert. Und Sie wissen viel besser, was die anderen Mitwirkenden an Ihrem Projekt getan haben!

In Visual Studio können Sie den Unterschied zwischen Dateien oder Commit nicht schnell erkennen oder (nur zum Index hinzufügen) und nur einen Teil der Änderungen festschreiben. Durchsuchen Sie Ihre Geschichte ist auch nicht gut ... All das endet in einer schmerzhaften Erfahrung!

Und zum Beispiel ist GitExtensions mit interessanten Plugins gebündelt: Hintergrundabruf, GitFlow, ... und jetzt kontinuierliche Integration !

Für die Benutzer von Visual Studio 2015 nimmt Git Gestalt an, wenn Sie die GitHub-Erweiterung installieren. Aber ein externes Tool ist noch besser ;-)

Philippe
quelle
funktioniert GitExtensions für Sie im Vergleich zu 2015? Das Menü funktioniert nicht für mich github.com/gitextensions/gitextensions/issues/2815
Raklos
15

TortoiseGit ist gereift und ich empfehle es besonders, wenn Sie TortoiseSVN verwendet haben.

SurfRat
quelle
10

Wie von Jon Rimmer beschrieben, können Sie GitExtensions verwenden. GitExtensions funktioniert in Visual Studio 2005 und Visual Studio 2008, es funktioniert auch in Visual Studio 2010, wenn Sie die ADDIN-Datei manuell kopieren und konfigurieren.

Henk
quelle
gut. Ich frage mich, wer die Benutzeroberfläche testet und genehmigt ... Nachrichten sind überall sehr verwirrend ... Ich vermute nur, dass sie sich beeilt haben, sie zu löschen und zu sehen, was / warum sich der Benutzer beschwert.
Ramnz
10

Derzeit gibt es in Visual Studio (2010 und 12) zwei Optionen für Git Source Control:

  1. Git-Quellcodeverwaltungsanbieter
  2. Microsoft Git Provider

Ich habe beide ausprobiert und festgestellt, dass der erste reifer ist und mehr Funktionen hat. Zum Beispiel spielt es gut mit Schildkrötengit und Git-Erweiterungen und zeigt sogar deren Merkmale.

Hinweis : Unabhängig davon, welche Erweiterung Sie verwenden, stellen Sie sicher, dass Sie sie aktivieren, damit Tools -> Options -> Source control -> Plugin Selectionsie funktioniert.

Tarun
quelle