{"id":55000287,"date":"2021-10-01T00:00:00","date_gmt":"2022-02-15T13:17:04","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=287"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Versionsverwaltung_mit_Git","status":"publish","type":"post","link":"https:\/\/vbentwickler.de\/Versionsverwaltung_mit_Git\/","title":{"rendered":"Versionsverwaltung mit Git"},"content":{"rendered":"<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2021_05\/pic_287_001.png\" alt=\"Git im Men&uuml;system von Visual Studio\" width=\"549,6265\" height=\"221,1022\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Git im Men&uuml;system von Visual Studio<\/span><\/b><\/p>\n<p><b>Wie geht eigentlich Versionsverwaltung mit Visual Studio-Projekten Wer Software mit Access  entwickelt, musste sich dar&uuml;ber nicht viele Gedanken machen: Man kopiert einfach die komplette .accdb-Datei unter einem anderen Namen. Mittlerweile gibt es auch einige L&ouml;sungen von Drittherstellern, mit denen die einzelnen Objekte verwaltet werden k&ouml;nnen. Unter Visual Studio ist die Versionsverwaltung zum Gl&uuml;ck direkt integriert. Visual Studio nutzt daf&uuml;r die Quellcodeverwaltung Git. Welche Einsatzm&ouml;glichkeiten es gibt und wie Sie diese f&uuml;r Ihre eigenen Anforderungen einsetzen k&ouml;nnen, zeigt der vorliegende Artikel.<\/b><\/p>\n<p>Das die Quellcodeverwaltung <b>Git <\/b>in Visual Studio integriert ist, sieht man beispielsweise an der Version 2019 direkt in der Men&uuml;leiste: Hier finden Sie den Eintrag <b>Git<\/b> mit einigen Unterpunkten vor (siehe Bild 1). In den folgenden Abschnitten erl&auml;utern wir allerdings erst einmal, in welchen Konstellationen Sie Git f&uuml;r Ihre Zwecke nutzen k&ouml;nnen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2021_05\/pic_287_001.png\" alt=\"Git im Men&uuml;system von Visual Studio\" width=\"549,6265\" height=\"221,1022\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Git im Men&uuml;system von Visual Studio<\/span><\/b><\/p>\n<p>Dabei verwenden wir die Begriffe <b>Quellcodeverwaltung <\/b>und <b>Versionsverwaltung <\/b>&uuml;brigens synonym.<\/p>\n<h2>Quellcode-verwaltung festlegen<\/h2>\n<p>In den Optionen von Visual Studio k&ouml;nnen Sie unter Quellcodeverwaltung festlegen, welches Tool zur Quellcodeverwaltung eingesetzt werden soll (siehe Bild 2).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2021_05\/pic_287_013.png\" alt=\"Git-Optionen\" width=\"674,627\" height=\"393,5323\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Git-Optionen<\/span><\/b><\/p>\n<p>Unter Visual Studio 2019 ist auf unserem Testsystem <b>Git <\/b>bereits voreingestellt.<\/p>\n<h2>Einsatzzwecke der Versionsverwaltung mit Git<\/h2>\n<p>Git wurde 2005 vom Erfinder von Linux, Linus Thorvalds, entwickelt. Die eigentliche Idee war damals, dass man die unterschiedlichen Versionen einer Software auf einem Server speichert, damit alle an dem Projekt beteiligten Entwickler darauf zugreifen konnten. Das unter anderem zu dem Zweck, jederzeit eine aktuelle Version des Projekts herunterladen zu k&ouml;nnen und somit immer auch die &Auml;nderungen der anderen Entwickler pr&auml;sent zu haben, aber auch dazu, die eigenen &Auml;nderungen mit den anderen Entwicklern zu teilen. Gegebenenfalls folgt hier noch ein Zwischenschritt, in dem die &Auml;nderungen noch gepr&uuml;ft werden, bevor sie in die Hauptversion &uuml;bernommen werden.<\/p>\n<p>Sie k&ouml;nnen Git aber auch einfach nutzen, um die verschiedenen Versionsst&auml;nde Ihrer eigenen Projekte auf dem lokalen Rechner zu verwalten. Weiter oben haben wir bereits das Beispiel von Access genannt: Hier konnte man eigentlich nur die komplette Datenbank sichern, um gegebenenfalls zu einem bestimmten Versionsstand zur&uuml;ckspringen zu k&ouml;nnen. Bei Visual Studio-Produkten ist es selbst ohne Quellcodeverwaltung bereits m&ouml;glich, einfach den Ordner mit dem Projekt zu kopieren und sich nach Bedarf eine &auml;ltere Version einer oder mehrerer Dateien in den aktuellen Projektordner zu holen. Mit Git wird das alles noch viel einfacher &#8211; wie das gelingt, zeigen die folgenden Abschnitte.<\/p>\n<h2>Projekt zu Git hinzuf&uuml;gen<\/h2>\n<p>Wenn Sie ein bestehendes Projekt haben und dieses mit der Quellcodeverwaltung <b>Git <\/b>verwalten m&ouml;chten, finden Sie den notwendigen Befehl direkt unten rechts im Hauptfenster von Visual Studio (siehe Bild 3). Klicken Sie auf <b>Zur Quellcodeverwaltung hinzuf&uuml;gen<\/b>, erscheint eine Liste der verf&uuml;gbaren Quellcodeverwaltungen &#8211; im Screenshot also nur <b>Git<\/b>.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2021_05\/pic_287_003.png\" alt=\"Hinzuf&uuml;gen zu Git\" width=\"649,627\" height=\"412,2162\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Hinzuf&uuml;gen zu Git<\/span><\/b><\/p>\n<p>W&auml;hlen Sie diesen Eintrag aus, erscheint als N&auml;chstes der Dialog <b>GIT-Repository erstellen <\/b>aus Bild 4.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2021_05\/pic_287_005.png\" alt=\"Erstellen eines Git-Repositorys\" width=\"649,627\" height=\"476,3929\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Erstellen eines Git-Repositorys<\/span><\/b><\/p>\n<p>Hier wollen wir f&uuml;rs Erste nur ein lokales Repository anlegen. Daher aktivieren wir links den Eintrag <b>Nur lokal<\/b>. Dies vereinfacht den Dialog stark, sodass wir nur noch den Pfad f&uuml;r das lokale Git-Repository angeben m&uuml;ssen. Hier wollen wir einfach das Hauptverzeichnis des Projekts nutzen.<\/p>\n<p>Ein Klick auf die Schaltlfl&auml;che <b>Erstellen <\/b>legt das Repository an und f&uuml;gt bereits alle Dateien des Projekts hinzu. Der Projektmappen-Explorer pr&auml;sentiert sich nun leicht ver&auml;ndert und auch in dem Bereich des Hauptfensters von Visual Studio, wo sich zuvor der Befehl <b>Zur Quellcodeverwaltung hinzuf&uuml;gen <\/b>befunden hat, zeigen sich einige neue Elemente (siehe Bild 5).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2021_05\/pic_287_006.png\" alt=\"Der ver&auml;nderte Projektmappen-Explorer\" width=\"424,6267\" height=\"352,9776\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Der ver&auml;nderte Projektmappen-Explorer<\/span><\/b><\/p>\n<p>Hier sehen Sie zum Beispiel, wie das Repository hei&szlig;t und dass Sie sich aktuell in einem sogenannten Branch namens <b>master <\/b>befinden (mehr dazu weiter unten). Klicken Sie auf master und zeigen f&uuml;r den nun erscheinenden Eintrag master das Kontextmen&uuml; an, finden Sie unter anderem einen Befehl namens Verlauf anzeigen (siehe Bild 6). Mit einem Klick auf diesen Befehl zeigen Sie alle bisherigen Versionen des ganzen Projekts an. Sp&auml;ter werden Sie sehen, dass Sie auch die Versionen f&uuml;r einzelne Dateien anzeigen k&ouml;nnen. An diesem Beispiel zeigen wir dann auch die Liste der bisher erstellten Versionen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2021_05\/pic_287_015.png\" alt=\"Anzeigen des Verlaufs\" width=\"424,6267\" height=\"411,5796\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Anzeigen des Verlaufs<\/span><\/b><\/p>\n<p>Nun zu den Eintr&auml;gen der Projektmappe: Hier finden wir jeweils ein Schloss-Symbol vor, das beim &Uuml;berfahren mit der Maus den Text <b>Eingecheckt <\/b>anzeigt. Ist dieses Symbol vorhanden, sehen Sie im Projektmappen-Explorer die Version des Elements, wie es auch im Repository eingecheckt ist. Eingecheckt hei&szlig;t in diesem Zusammenhang, dass die aktuelle Version dort gespeichert ist.<\/p>\n<p>Eine &Auml;nderung des Symbols eines Elements erhalten wir beispielsweise, wenn wir seinen Code &auml;ndern. Dann wandelt Visual Studio das Symbol in ein rotes H&auml;kchen um und der angezeigte Text lautet <b>Ausstehende Bearbeitung <\/b>(siehe Bild 7). <\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2021_05\/pic_287_007.png\" alt=\"Ein Element mit ausstehender Bearbeitung\" width=\"424,6267\" height=\"326,871\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 7: Ein Element mit ausstehender Bearbeitung<\/span><\/b><\/p>\n<p>Wenn Sie die neue Version nun einchecken wollen, w&auml;hlen Sie den Kontextmen&uuml;-Eintrag <b>Git|Commit oder Stash <\/b>f&uuml;r dieses Element aus (siehe Bild 8).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2021_05\/pic_287_008.png\" alt=\"Element einchecken\" width=\"649,627\" height=\"517,6465\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 8: Element einchecken<\/span><\/b><\/p>\n<p>Dies ruft den Bereich aus Bild 10 hervor. Hier geben Sie Textfeld mit dem Text <b>Nachricht eingeben <\/b>einen Text ein, der die aktuellen &Auml;nderungen beschreibt. Auf diese Weise k&ouml;nnen Sie sp&auml;ter nachvollziehen, welchen &Auml;nderungen dieses Commit enth&auml;lt. Klicken Sie dann auf <b>Commit f&uuml;r alle<\/b>, wird der Bereich geschlossen und das ge&auml;nderte Element erh&auml;lt im Projektmappen-Explorer das Icon <b>Eingecheckt<\/b>.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2021_05\/pic_287_009.png\" alt=\"Einstellungen f&uuml;r das Commit\" width=\"399,6267\" height=\"308,6631\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 9: Einstellungen f&uuml;r das Commit<\/span><\/b><\/p>\n<h2>Was ist passiert<\/h2>\n<p>Durch das Einchecken oder Commit einer oder mehrerer Dateien mit &Auml;nderungen sorgen Sie f&uuml;r die folgenden &Auml;nderungen:<\/p>\n<ul>\n<li>Die Datei wird wieder als <b>Eingecheckt <\/b>markiert.<\/li>\n<li>Im Repository sind nun zwei Versionsst&auml;nde dieser Datei hinterlegt.<\/li>\n<li>Es liegen einige neue Elemente im Dateisystem vor (siehe Bild 9).<\/li>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2021_05\/pic_287_014.png\" alt=\"Elemente des lokalen Repositorys\" width=\"649,627\" height=\"348,9731\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 10: Elemente des lokalen Repositorys<\/span><\/b><\/p>\n<\/ul>\n<p>Die Datei <b>.gitignore <\/b>enth&auml;lt beispielsweise die Namen aller Dateien, die von der Quellcodeverwaltung ignoriert werden sollen.<\/p>\n<p>Hierzu geh&ouml;ren beispielsweise die beim Debuggen erstellten Dateien oder auch benutzerspezifische Files.<\/p>\n<p>Und Sie k&ouml;nnen nun verschiedene Aktionen ansto&szlig;en:<\/p>\n<ul>\n<li>Anzeigen des Verlaufs<\/li>\n<li>Anzeigen der Unterschiede zwischen den verschiedenen Versionen<\/li>\n<li>Wiederherstellen &auml;lterer Versionen<\/li>\n<\/ul>\n<h2>Verlauf ansehen<\/h2>\n<div class=\"rcp_restricted\"><p><span style=\"color: #ff0000\">M&ouml;chten Sie weiterlesen? Dann l&ouml;sen Sie Ihr Ticket!<\/span><br \/>\n<span style=\"color: #ff0000\">Hier geht es zur Bestellung des Jahresabonnements des Magazins <strong>Visual Basic Entwickler<\/strong>:<\/span><br \/>\n<span style=\"color: #ff0000\"><a style=\"color: #ff0000\" href=\"https:\/\/shop.minhorst.com\/magazine\/363\/visual-basic-entwickler-jahresabonnement?c=77\">Zur Bestellung ...<\/a><\/span><br \/>\n<span style=\"color: #ff0000\">Danach greifen Sie sofort auf <strong>alle rund 200 Artikel<\/strong> unseres Angebots zu - auch auf diesen hier!<\/span><br \/>\n<span style=\"color: #000000\">Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:<\/span><\/p>\n<\/div>\n\n\t\n\t<form id=\"rcp_login_form\"  class=\"rcp_form\" method=\"POST\" action=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000287\/\">\n\n\t\t\n\t\t<fieldset class=\"rcp_login_data\">\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_login\">Username or Email<\/label>\n\t\t\t\t<input name=\"rcp_user_login\" id=\"rcp_user_login\" class=\"required\" type=\"text\"\/>\n\t\t\t<\/p>\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_pass\">Password<\/label>\n\t\t\t\t<input name=\"rcp_user_pass\" id=\"rcp_user_pass\" class=\"required\" type=\"password\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t\t<p>\n\t\t\t\t<input type=\"checkbox\" name=\"rcp_user_remember\" id=\"rcp_user_remember\" value=\"1\"\/>\n\t\t\t\t<label for=\"rcp_user_remember\">Remember me<\/label>\n\t\t\t<\/p>\n\t\t\t<p class=\"rcp_lost_password\"><a href=\"\/data\/wp\/v2\/posts\/55000287?rcp_action=lostpassword\"><\/a><\/p>\n\t\t\t<p>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_action\" value=\"login\"\/>\n\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_redirect\" value=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000287\/\"\/>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"c33d383206\"\/>\n\t\t\t\t<input id=\"rcp_login_submit\" class=\"rcp-button\" type=\"submit\" value=\"Login\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t<\/fieldset>\n\n\t\t\n\t<\/form>\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wie geht eigentlich Versionsverwaltung mit Visual Studio-Projekten Wer Software mit Access  entwickelt, musste sich dar&uuml;ber nicht viele Gedanken machen: Man kopiert einfach die komplette .accdb-Datei unter einem anderen Namen. Mittlerweile gibt es auch einige L&ouml;sungen von Drittherstellern, mit denen die einzelnen Objekte verwaltet werden k&ouml;nnen. Unter Visual Studio ist die Versionsverwaltung zum Gl&uuml;ck direkt integriert. Visual Studio nutzt daf&uuml;r die Quellcodeverwaltung Git. Welche Einsatzm&ouml;glichkeiten es gibt und wie Sie diese f&uuml;r Ihre eigenen Anforderungen einsetzen k&ouml;nnen, zeigt der vorliegende Artikel.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662021,66052021,44000024,44000013],"tags":[],"yst_prominent_words":[],"class_list":["post-55000287","post","type-post","status-publish","format-standard","hentry","category-662021","category-66052021","category-Berichte_und_Reporting","category-Visual_Studio_nutzen"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000287","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/comments?post=55000287"}],"version-history":[{"count":0,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000287\/revisions"}],"wp:attachment":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/media?parent=55000287"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/categories?post=55000287"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/tags?post=55000287"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/yst_prominent_words?post=55000287"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}