Versionskontrolle mit Git und Visual Studio 2019

Versionskontrolle mit Git und Visual Studio 2019

Jan Suchotzki bio photo Von Jan Suchotzki

Git ist DIE dezentrale Versionsverwaltung. Cool ūüėé! Aber was soll das sein und wof√ľr ist das √ľberhaupt gut? Das erkl√§re ich dir in diesem Artikel.

Dezentrale Versionsverwaltung bedeutet, dass es nicht einen zentralen Server gibt den du f√ľr alle Aktionen mit der Versionsverwaltung ben√∂tigst. D.h. git kannst du, wenn du m√∂chtest, ganz alleine f√ľr dich auf deinem Rechner verwenden. Vielleicht hast du schon mal eine ‚Äúgute‚ÄĚ Version deines Quellcodes komplett kopiert (also alle Dateien die dazugeh√∂ren im Datei-Explorer in ein Verzeichnis mit dem Namen MeineAnwendung_GuteVersion oder MeineAnwendung_v2 kopiert) um diese Version nicht zu verlieren. Um dieses Problem auf eine elegantere Weise zu l√∂sen verwendest du ab jetzt am besten git.

Neben dem lokalen Sichern von Versionen bietet dir git aber auch die M√∂glichkeit deinen Quellcode auf einem Server zusichern. Das kannst du machen als Backup oder insbesondere auch, wenn du mit anderen Entwicklern zusammen an einem Projekt arbeiten m√∂chtest. Wenn du dein Projekt auf einen Server schieben m√∂chtest, dann kannst du z.B. GitHub verwenden. Im GitHub Tutorial Deutsch zeige ich dir das ausf√ľhrlich und in GitHub ist nicht Git erkl√§re ich den genauen Unterschied zwischen Git und GitHub.

Mit Git kannst du √Ąnderungen an deinem Quellcode mit einem Zeitstempel und einer Beschreibung speichern. Der passende Fachbegriff daf√ľr ist einen Commit erstellen. Hast du nun mehrere Commits erstellt, kannst du dir die Historie anschauen und auch auf den Stand eines ganz spezifischen Commits aus der Vergangenheit zur√ľckfallen. Dank Git kannst du das alles lokal auf deinem Rechner machen ohne irgendetwas zus√§tzliches zu installieren (au√üer Visual Studio ;). M√∂chtest du dann sp√§ter doch dein Projekt √∂ffentlich verf√ľgbar machen, kannst du immer noch deine lokalen √Ąnderungen mit GitHub synchronisieren.

In dieser Kurzanleitung zeige ich dir die wichtigsten Schritte um mit Visual Studio und Git

  1. ein Projekt zu erstellen / initialisieren,
  2. einen Commit aus deinen √Ąnderungen zu erstellen,
  3. den aktuellen Verlauf deiner Commits anzuschauen und
  4. auf einen √§lteren Commit zur√ľck zufallen.

Ein Projekt erstellen

Jedesmal, wenn du ein neues Projekt erstell hast, kannst du √ľber die Auswahlbox: Zur Quellcodeverwaltung hinzuf√ľgen (unten rechts in der Status-Bar von Visual Studio) Git ausw√§hlen. W√§hlst du diese Option, was du eigentlich immer machen solltest ;-), wird automatisch im obersten Verzeichnis deines Projektes ein Ordner mit dem Namen .git angelegt. Darin werden s√§mtliche Informationen von Git gespeichert.

Zur Quellcodeverwaltung hinzuf√ľgen

Zus√§tzlich zum .git Verzeichnis werden auch gleich 2 Commits erstellt. Damit sind dann bereits alle zum Projekt geh√∂renden Dateien zur Versionsverwaltung hinzugef√ľgt. Dieses wird dir im Projektmappen-Explorer in Visual Studio angezeigt. Dort siehst du vor den Dateien (z.B. App.config) ein Symbol welches aussieht wie ein Vorh√§ngeschloss. Damit wird dir angezeigt, dass alle √Ąnderungen in Git gespeichert sind.

Sobald du in einer Datei eine √Ąnderung vornimmst, √§ndert sich das Symbol und zeigt einen roten Haken an. Dieser sagt dir, dass es √Ąnderungen in der Datei gibt, f√ľr die bisher noch kein Commit in Git erstellt wurde.

Die wichtigsten Schritte:

1) Projekt erstellen mit:

Datei -> Neu -> Projekt...

oder √ľber den Projekterstellungs-Assistent beim Start von Visual Studio.

2) Git aktivieren durch auswählen von

Zur Quellcodeverwaltung hinzuf√ľgen -> Git

Einen Commit erstellen

Nachdem du nun dein Projekt von Git verwalten l√§sst, solltest du deine √Ąnderungen von Zeit zu Zeit mit einem Commit bei Git ‚Äúabliefern‚ÄĚ. Git sind alle deine √Ąnderungen bekannt, aber es wei√ü nicht was deine √Ąnderungen f√ľr dich bedeuten.

Hast du mehrere Dateien ge√§ndert, dann wei√ü Git auch nicht welche √Ąnderungen f√ľr dich einen logischen Zusammenhang haben. Du k√∂nntest beispielsweise mehrere √Ąnderungen gemacht haben, die dein Projekt um verschiedene Funktionalit√§ten erweitern. Ich versuche immer m√∂glichst kleine Commits zu machen. Das bedeutet, dass ich nach wenigen √Ąnderungen bereits ein Commit erstelle. Bevor ich hier jedoch wieder abschweife, zur√ľck zur eigentlichen Anleitung (eine genauere Beschreibung der ‚Äúbest practices‚ÄĚ f√ľr einen Commit bekommst du dann in einem sp√§teren Artikel).

Der einfachste Weg alle deine aktuellen √Ąnderungen in einen Commit zu packen ist, dass du in den Team Explorer gehst und dort den Bereich √Ąnderungen ausw√§hlst. Dieser wird dir √ľblicherweise direkt angezeigt. Sollte das nicht der Fall sein, dann kannst du √ľber das Haussymbol (Startseite) eine √úbersichtsseite aufrufen und dort √Ąnderungen ausw√§hlen.

√Ąnderungen-Seite im Team-Explorer

Unterhalb vom gelben Textfeld siehst du alle aktuellen √Ąnderungen aufgelistet. Diese Auflistung umfasst alle Dateien, die du seit dem letzten Commit ge√§ndert hast. Wenn du nun einfach eine Beschreibung f√ľr diese √Ąnderung(en) in das gelbe Textfeld eingibst und den Button Commit f√ľr alle bet√§tigst, hast du einen Commit erstellt. Damit verschwindet die Auflistung der √Ąnderungen, weil diese ja nun in einem Commit beschrieben sind.

Diesen Prozess solltest du zuk√ľnftig kontinuierlich wiederholen. Damit kannst du dann im n√§chsten Schritt sehen welche √Ąnderungen du wann und warum gemacht hast.

Die wichtigsten Schritte:

Im Team Explorer:

  1. Commit-Beschreibung eingeben
  2. Commit f√ľr alle Button bet√§tigen

Aktuellen Verlauf anzeigen

Sobald du einige Commits erstellt hast, kannst du dir in Visual Studio den bisherigen Verlauf anschauen. Dazu gehst du am besten in den Projektmappen-Explorer. Darin kannst du auf der Datei f√ľr die du den Verlauf sehen m√∂chtest das Kontextmen√ľ (rechte Maustaste) √∂ffnen und Verlauf anzeigen... ausw√§hlen. Dies √∂ffnet einen weiteren Tab.

Darin siehst du f√ľr jeden Commit sowohl das Datum und auch die Nachricht. Wenn du zu einem Commit die Details sehen m√∂chtest, dann gehst du auf diesen Commit im Verlauf und rufst √ľber das Kontextmen√ľ den Punkt Commitdetails anzeigen auf. Damit wechselt Visual Studio automatisch vom Projektmappen-Explorer zum Team Explorer. Darin siehst du auch welche Dateien vom Commit ver√§ndert wurden.

Insbesondere im Verlauf siehst du warum gute Commit-Beschreibungen wichtig sind. Sobald du nämlich einige Commits gemacht hast, wird es immer schwieriger einzelne Commits wiederzufinden. Insbesondere wenn einige Tage oder gar Wochen vergangen sind, dann kommst du mit kryptischen Beschreibungen nicht wirklich weiter.

M√∂chtest du den Verlauf f√ľr das ganze Projekt sehen, dann musst du den Team Explorer bem√ľhen. Darin gehst du am besten √ľber das Haussymbol zur Startseite. Dort w√§hlst du dann Branches aus. √úblicherweise siehst du in der folgenden Auflistung nur den Projektnamen und dadrunter den Eintrag master. Solltest du mehrere Branches haben, dann wird dir der Aktive mit fettgedruckten Buchstaben angezeigt.

Auf dem gew√ľnschten Branch kannst du im Kontextmen√ľ ebenfalls Verlauf anzeigen... ausw√§hlen. Dann siehst du alle Commits die es bisher in dem ausgew√§hlten Branch gegeben hat.

Solltest du das Thema Branches noch nicht kennen ist das kein Problem. Verwende einfach erstmal master.

Die wichtigsten Schritte:

Im Projektmappen-Explorer:

Via Kontextmen√ľ "Verlauf anzeigen..." auf der gew√ľnschten Datei ausf√ľhren

Eine ältere Version (Commit) verwenden

Gerade wenn es darum geht auf eine √§ltere Version zur√ľck zu gehen gibt es bei Git ein paar Herausforderungen zu meistern. Wenn du im Verlauf (siehe vorherigen Abschnitt) einen Commit ausw√§hlst und dir das Kontextmen√ľ anzeigen l√§sst, dann findest du den Eintrag Zur√ľcksetzen.

Dieser Eintrag setzt jedoch nicht dein ganzes Projekt auf den Stand des Commits zur√ľck, sondern macht genau diesen einen Commit r√ľckg√§ngig. Hast du beispielsweise im letzten Commit einen Fehler gemacht, dann kannst du ihn auf diese Weise r√ľckg√§ngig machen.

Ich w√ľrde dir erstmal davon abraten das Zur√ľcksetzen in einem anderen Kontext auszuf√ľhren. Es macht dir zwar nichts kaputt, weil das Zur√ľcksetzen als ein weiterer Commit im Verlauf auftaucht, aber es wird dann un√ľbersichtlich und kompliziert.

Eine Alternative bekommst du mit der Funktionalit√§t Neuer Branch.... Diese kannst du ebenfalls aus dem Kontextmen√ľ eines Commits im Verlauf aufrufen. Wenn du diese Funktionalit√§t verwendest, erstellst du einen neuen Zweig in Git. Das bedeutet, dass alle bisherigen √Ąnderungen erhalten bleiben und du unabh√§ngig davon eine andere L√∂sung ausprobieren kannst.

Bevor du einen neuen Branch erstellen kannst, musst du alle noch ausstehenden √Ąnderungen per Commit abgeben. Wenn es noch √Ąnderungen gibt, dann kannst du keinen neuen Branch erstellen.

Willst du also dein Projekt ab einer gewissen Stelle im Verlauf ver√§ndern, dann gehst du auf den entsprechenden Commit, w√§hlst Neuer Branch... aus dem Kontextmen√ľ und gibst im Team Explorer einen Namen f√ľr deinen Branch ein. Dies k√∂nnte zum Beispiel sein ‚ÄúL√∂sungsweg2‚ÄĚ. Es ist bereits Branch auschecken ausgew√§hlt und dies solltest du auch belassen. Nun einfach den Button Branch erstellen bet√§tigen und du hast einen neuen Branch mit dem Projektstand zum ausgew√§hlten Commit erstellt. In diesem Branch kannst du √Ąnderungen machen und beliebig viele Commits erstellen.

Hast du nun in deinem neuen Branch deine L√∂sung soweit entwickelt wie n√∂tig, kannst du diesen Branch zur√ľck f√ľhren in deinen Ausgangsbranch (das wird Merge genannt). Somit hast du nicht mehr zwei parallele Zweige an denen entwickelt werden kann.

Nachdem du alle √Ąnderungen in deinem Branch per Commit abgegeben hast, kannst du zur√ľck in den master Branch wecheseln. Das machst du im Team Explorer im Bereich Branches. Dort siehst du, dass der von dir erstellte Branch momentan fettgedruckt ist. D.h. er ist momentan aktiv. Mache nun einen Doppelklick auf den Branch master direkt im Team Explorer. Damit wird dieser aktiv gesetzt.

Wenn nun der master Branch aktiv ist, kannst du auf ihm im Team Explorer per Kontextmen√ľ die Funktion Mergen aus... ausw√§hlen. Damit √∂ffnet sich eine neue Eingabe im Team Explorer bei der du deinen Branch im Bereich Mergen aus Branch: ausw√§hlen kannst. Die restlichen Einstellungen k√∂nnen so bleiben und du f√ľhrst mit einem Klick auf den Button Merge den Vorgang aus.

Nun kann es passieren, dass du noch Konflikte aufl√∂sen musst. Dabei solltest du dir alles im Detail anschauen, aber √ľblicherweise kannst du immer die √Ąnderungen aus der Quelle √ľbernehmen.

Hoffentlich hat dir diese Anleitung ein wenig geholfen beim Umgang mit Git und Visual Studio. Momentan fehlen dieser Anleitung noch ein paar Bilder. Diese werde ich in den nächsten Tagen nachliefern.

Viel Erfolg beim Verwalten deiner Versionen mit Git und Visual Studio

Jan