{"id":55000073,"date":"2017-02-01T00:00:00","date_gmt":"2020-03-27T19:24:43","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=73"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Quellcodeverwaltung_mit_Visual_Studio_und_Git","status":"publish","type":"post","link":"https:\/\/vbentwickler.de\/Quellcodeverwaltung_mit_Visual_Studio_und_Git\/","title":{"rendered":"Quellcodeverwaltung mit Visual Studio und Git"},"content":{"rendered":"<p><b>Die Arbeit mit Visual Studio-Projekten bietet gegen&uuml;ber Access einen interessanten Vorteil: Im Gegensatz zu Access, wo die einzelnen Objekte alle in der Access-Datei gespeichert wurden, finden Sie alle Objekte eines Visual Studio-Projekts als einzelne Dateien im Projektordner wieder. Das erleichtert vor allem die Verwaltung des Quellcodes in einer Quellcodeverwaltung. Eine solche erfasst nach Wunsch Zwischenst&auml;nde der Entwicklung und bietet die M&ouml;glichkeit, sp&auml;ter noch auf vorherige St&auml;nde zuzugreifen und diese wiederherzustellen, sollte sich die Programmierung in die falsche Richtung entwickelt haben. Dieser Artikel zeigt die Basics der Quellcodeverwaltung unter Visual Studio &#8211; vorerst f&uuml;r den Einsatz im stillen K&auml;mmerlein eines Einzelentwicklers.<\/b><\/p>\n<p>Bei einem &uuml;blichen WPF\/C#-Projekt, wie Sie es im Rahmen dieses Magazins schon einige Male angelegt haben, taucht die Quellcodeverwaltung von Visual Studio nicht sichtbar in Erscheinung. Dies ist erst der Fall, wenn Sie das Kontextmen&uuml; der Projektmappe im Projektmappen-Explorer anzeigen &#8211; dort finden Sie den Eintrag <b>Projektmappe zur Quellcodeverwaltung hinzuf&uuml;gen <\/b>vor (siehe Bild 1).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_01\/pic_73_001.png\" alt=\"Hinzuf&uuml;gen der Projektmappe zu einer Quellcodeverwaltung\" width=\"549,6265\" height=\"416,5076\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Hinzuf&uuml;gen der Projektmappe zu einer Quellcodeverwaltung<\/span><\/b><\/p>\n<p>Nach dem Bet&auml;tigen dieses Befehls geschieht nicht viel &#8211; au&szlig;er dass die Dateien im Projektmappen-Explorer nun alle mit einem zus&auml;tzlichen Icon ausgestattet sind, das beim &Uuml;berfahren mit der Maus den Text <b>Eingecheckt <\/b>liefert (siehe Bild 2).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_01\/pic_73_012.png\" alt=\"Nach dem Hinzuf&uuml;gen zur Quellcodeverwaltung\" width=\"324,7794\" height=\"325,7235\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Nach dem Hinzuf&uuml;gen zur Quellcodeverwaltung<\/span><\/b><\/p>\n<p>Das Hinzuf&uuml;gen der Projektmappe zur Quellcodeverwaltung sorgt also auch daf&uuml;r, dass alle enthaltenen Dateien erstmalig eingecheckt werden. Einchecken bedeutet hierbei, dass die aktuelle Version der Dateien gespeichert wird. Dies war der Weg, um ein bestehendes Projekt zu einer Quellcodeverwaltung hinzuzuf&uuml;gen. Im Folgenden sehen wir uns allerdings die Vorgehensweise f&uuml;r ein neues, leeres WPF-Projekt an &#8211; dort werden wir dann ein paar &Auml;nderungen am Code vornehmen, einchecken, &Auml;nderungen betrachten, neue Dateien anlegen und mehr.<\/p>\n<h2>Neues Projekt direkt zur Quellcodeverwaltung hinzuf&uuml;gen<\/h2>\n<p>Wenn Sie &uuml;ber den Men&uuml;eintrag <b>Datei|Neu|Projekt&#8230; <\/b>ein neues Projekt erstellen, finden Sie im Dialog <b>Neues Projekt <\/b>rechts unten eine Option namens <b>Zur Quellcodeverwaltung hinzuf&uuml;gen <\/b>(siehe Bild 3). Aktivieren Sie diese Option und klicken dann auf <b>OK<\/b>, werden die neu erzeugten Projektdateien direkt zur Quellcodeverwaltung hinzugef&uuml;gt.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_01\/pic_73_006.png\" alt=\"Anlegen eines neuen Projekts, das direkt zur Quellcodeverwaltung hinzugef&uuml;gt werden soll\" width=\"649,559\" height=\"366,1\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Anlegen eines neuen Projekts, das direkt zur Quellcodeverwaltung hinzugef&uuml;gt werden soll<\/span><\/b><\/p>\n<p>Der Projektmappen-Explorer zeigt dann direkt alle Dateien als eingecheckt an (siehe Bild 4).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_01\/pic_73_007.png\" alt=\"Ein frisches Objekt, direkt in die Quellcodeverwaltung eingecheckt\" width=\"349,7625\" height=\"217,5848\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Ein frisches Objekt, direkt in die Quellcodeverwaltung eingecheckt<\/span><\/b><\/p>\n<h2>Bearbeiten einer Datei<\/h2>\n<p>Wenn Sie eine der eingecheckten und mit dem Schloss-Symbol versehenen Dateien bearbeiten, &auml;ndert sich das Symbol in einen roten Haken mit dem ToolTip-Text <b>Ausstehende Bearbeitung<\/b>.<\/p>\n<p>Als Beispiel haben wir der noch unber&uuml;hrten Datei <b>MainWindow.xaml <\/b>ein neues Textfeld hinzugef&uuml;gt, also von<\/p>\n<pre>&lt;Grid&gt;\r\n&lt;\/Grid&gt;<\/pre>\n<p>zu <\/p>\n<pre>&lt;Grid&gt;\r\n     &lt;TextBox x:Name=\"txtBeispiel\" Text=\"Beispiel\"&gt;&lt;\/TextBox&gt;\r\n&lt;\/Grid&gt;<\/pre>\n<p>Das Kontextmen&uuml; dieser Datei im Projektmappen-Explorer liefert nun einige weitere Optionen im Kontextmen&uuml; (siehe Bild 5):<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_01\/pic_73_003.png\" alt=\"Optionen einer ge&auml;nderten Datei\" width=\"424,7115\" height=\"434,6419\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Optionen einer ge&auml;nderten Datei<\/span><\/b><\/p>\n<ul>\n<li><b>Commit<\/b>: Ruft den Bereich <b>&Auml;nderungen<\/b> auf, der alle seit dem letzten Commit durchgef&uuml;hrten &Auml;nderungen auflistet und die M&ouml;glichkeit bietet, eine Commitnachricht einzugeben. Dabei handelt es sich um einen benutzerdefinierten Text, mit dem Sie beispielsweise Informationen zu den get&auml;tigten &Auml;nderungen angeben k&ouml;nnen.<\/li>\n<li><b>Verlauf anzeigen<\/b>: Zeigt eine Liste der bisherigen Commits f&uuml;r dieses Projekt an.<\/li>\n<li><b>Mit unge&auml;nderten vergleichen<\/b>: &Ouml;ffnet einen Bereich, in dem die aktuelle, ge&auml;nderte Version mit der Version verglichen wird, wie sie zuvor aussah.<\/li>\n<li><b>&Auml;nderungsverlauf einblenden<\/b>: Zeigt alle &Auml;nderungen in einer Ansicht an.<\/li>\n<\/ul>\n<p>Diese Bereiche schauen wir uns in den folgenden Abschnitten im Detail an.<\/p>\n<h2>&Auml;nderungen-Dialog<\/h2>\n<p>Der Bereich <b>Team-Explorer &#8211; &Auml;nderungen <\/b>zeigt jeweils die seit dem letzten Commit ge&auml;nderten Dateien in einer Liste im unteren Bereich an. Diesen Bereich k&ouml;nnen Sie immer mit dem Men&uuml;befehl <b>Ansicht|Team Explorer <\/b>oder mit der Tastenkombination <b>Strg + ^, Strg + M <\/b>einblenden. Sobald eine &Auml;nderung vorliegt, k&ouml;nnen Sie eine Commit-Nachricht eingeben und die &Auml;nderungen mit einem Klick auf die Schaltfl&auml;che <b>Commit f&uuml;r alle <\/b>durchf&uuml;hren (siehe Bild 6). Das erste offensichtliche Resultat ist, dass das Icon der ge&auml;nderten Dateien wieder vom roten Haken in das blaue Schloss ge&auml;ndert wird. Die Schaltfl&auml;che <b>Commit f&uuml;r alle <\/b>wird &uuml;brigens nur bei Vorliegen von &Auml;nderungen und bei Vorhandensein einer Commit-Nachricht aktiviert.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_01\/pic_73_005.png\" alt=\"Angaben vor dem Commit\" width=\"549,6265\" height=\"262,482\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Angaben vor dem Commit<\/span><\/b><\/p>\n<p>Die Schaltfl&auml;che bietet &uuml;brigens noch weitere Funktionen an, wenn Sie auf den Pfeil nach unten klicken:<\/p>\n<ul>\n<li><b>Commit f&uuml;r alle<\/b>: &Uuml;bertr&auml;gt die &Auml;nderungen in das lokale Repository.<\/li>\n<li><b>Commit f&uuml;r alle und Push<\/b>: &Uuml;bertr&auml;gt die &Auml;nderungen in das lokale Repository und &#8220;pusht&#8221; diese auch gleich an eventuell angeschlossene Remote-Repositorys (weitere Informationen weiter unten).<\/li>\n<li><b>Commit f&uuml;r alle und Sync<\/b>: &Uuml;bertr&auml;gt die &Auml;nderungen in das lokale Repository, &#8220;synct&#8221; die &Auml;nderungen von einem eventuell angeschlossenen Remote-Repository und &#8220;pusht&#8221; die &Auml;nderungen dann in das Remote-Repository. Sollten dabei an der gleichen Datei auf beiden Seiten &Auml;nderungen vorgenommen worden sein, m&uuml;ssen eventuell auftretende Konflikte gel&ouml;st werden (siehe weiter unten).<\/li>\n<\/ul>\n<h2>Verlauf anzeigen<\/h2>\n<p>Wenn Sie f&uuml;r eine Datei eine oder mehrere Commits durchgef&uuml;hrt haben, k&ouml;nnen Sie sich den &Auml;nderungsverlauf ansehen. Dazu w&auml;hlen Sie aus dem Kontextmen&uuml; der jeweiligen Datei den Eintrag <b>Verlauf anzeigen&#8230; <\/b>auf. Dies &ouml;ffnet den Dialog <b>Verlauf &#8211; <Dateiname> <\/b>(siehe Bild 7). Dieser zeigt alle bisherigen Commits samt den angegebenen Commit-Nachrichten an.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_01\/pic_73_013.png\" alt=\"&Auml;nderungsverlauf einer Datei\" width=\"549,6265\" height=\"220,2088\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 7: &Auml;nderungsverlauf einer Datei<\/span><\/b><\/p>\n<p>Wenn Sie mit der rechten Maustaste auf einen der Commit-Eintr&auml;ge klicken, finden Sie wiederum einige interessante Befehle vor. Mit <b>Commitdetails anzeigen <\/b>&ouml;ffnen Sie beispielsweise wieder den <b>Team Explorer<\/b>-Bereich, der dann die Details zu diesem Commit inklusive der betroffenen Dateien anzeigt. <b>Mit vorherigen vergleichen&#8230; <\/b>&ouml;ffnet den <b>Unterschied<\/b>-Bereich, den Sie in Bild 8 sehen. Hier erscheinen die ausgew&auml;hlte und die vorherige Version, wobei die gel&ouml;schten, ge&auml;nderten und neu erstellten Zeilen jeweils farbig hervorgehoben werden. <\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_01\/pic_73_014.png\" alt=\"Vergleich der aktuellen mit der vorherigen Version\" width=\"599,593\" height=\"264,265\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 8: Vergleich der aktuellen mit der vorherigen Version<\/span><\/b><\/p>\n<p>Der Kontextmen&uuml;-Eintrag <b>&Auml;nderungsverlauf einblenden <\/b>zeigt die &Auml;nderungen in einer einzigen Textdatei. Das sieht f&uuml;r eine ge&auml;nderte Zeile allein noch recht &uuml;berschaubar aus, wie Bild 9 zeigt.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_01\/pic_73_015.png\" alt=\"&Auml;nderungsverlauf der vorherigen und der ausgew&auml;hlten Version\" width=\"599,593\" height=\"196,2444\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 9: &Auml;nderungsverlauf der vorherigen und der ausgew&auml;hlten Version<\/span><\/b><\/p>\n<p>Die Befehle <b>Neuer Branch&#8230; <\/b>und <b>Tag erstellen <\/b>schauen wir uns weiter unten an. Der Befehl <b>Zur&uuml;cksetzen<\/b> sowie die beiden Befehle <b>Zur&uuml;cksetzen|Zur&uuml;cksetzen und &Auml;nderungen beibehalten<\/b> und <b>Zur&uuml;cksetzen|Zur&uuml;cksetzen und &Auml;nderungen l&ouml;schen <\/b>sorgen daf&uuml;r,  dass nur ein einziger Commit r&uuml;ckg&auml;ngig gemacht wird, aber nicht das ganze Projekt auf einen Stand zu diesem Commit gebracht wird. Daf&uuml;r gibt es bessere Methoden &#8211; siehe weiter unten unter <b>Branches<\/b>.<\/p>\n<h2>Vollst&auml;ndigen Verlauf des Projekts anzeigen<\/h2>\n<p>Wenn Sie nicht nur den Verlauf einer einzelnen Datei, sondern die Commits des kompletten Projekts ansehen wollen, &ouml;ffnen Sie den <b>Team Explorer<\/b>, wechseln zur Startseite (mit der <b>Home<\/b>-Schaltfl&auml;che) und wechseln dann zum Bereich <b>Branches<\/b>. Auch wenn wir bisher noch nicht &uuml;ber Branches gesprochen haben, finden Sie dort den Eintrag <b>Master<\/b>. Dieser liefert &uuml;ber das Kontextmen&uuml; den Befehl <b>Verlauf anzeigen&#8230;<\/b>, mit dem Sie eine &Uuml;bersicht der Commits wie f&uuml;r einzelne Dateien &ouml;ffnen k&ouml;nnen &#8211; nur eben diesmal mit allen Commits, die f&uuml;r die Dateien des Projekts ausgef&uuml;hrt wurden.<\/p>\n<h2>Weitere Optionen im Team Explorer-Bereich<\/h2>\n<p>Wenn Sie im Kontextmen&uuml; den Eintrag <b>Commit <\/b>f&uuml;r das komplette Projekt oder auch f&uuml;r eine einzelne Datei aufrufen, erscheint der Team Explorer-Bereich und zeigt die Seite <b>&Auml;nderungen <\/b>an. Der Team-Explorer hat aber auch noch weitere Bereiche, die Sie durch einen Klick auf die <b>Home<\/b>-Schaltfl&auml;che einblenden k&ouml;nnen (siehe Bild 10).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_01\/pic_73_010.png\" alt=\"Die Team Explorer-Startseite mit Schaltfl&auml;chen zum Aufrufen der verschiedenen Bereiche\" width=\"549,6265\" height=\"250,4416\" \/><\/p>\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\/55000073\/\">\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\/55000073?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<input type=\"hidden\" name=\"rcp_redirect\" value=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000073\/\"\/>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"123b777de9\"\/>\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>Die Arbeit mit Visual Studio-Projekten bietet gegen&uuml;ber Access einen interessanten Vorteil: Im Gegensatz zu Access, wo die einzelnen Objekte alle in der Access-Datei gespeichert wurden, finden Sie alle Objekte eines Visual Studio-Projekts als einzelne Dateien im Projektordner wieder. Das erleichtert vor allem die Verwaltung des Quellcodes in einer Quellcodeverwaltung. Eine solche erfasst nach Wunsch Zwischenst&auml;nde der Entwicklung und bietet die M&ouml;glichkeit, sp&auml;ter noch auf vorherige St&auml;nde zuzugreifen und diese wiederherzustellen, sollte sich die Programmierung in die falsche Richtung entwickelt haben. Dieser Artikel zeigt die Basics der Quellcodeverwaltung unter Visual Studio &#8211; vorerst f&uuml;r den Einsatz im stillen K&auml;mmerlein eines Einzelentwicklers.<\/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":[66012017,662017,44000038,44000013],"tags":[],"yst_prominent_words":[],"class_list":["post-55000073","post","type-post","status-publish","format-standard","hentry","category-66012017","category-662017","category-Office_programmieren","category-Visual_Studio_nutzen"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000073","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=55000073"}],"version-history":[{"count":0,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000073\/revisions"}],"wp:attachment":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/media?parent=55000073"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/categories?post=55000073"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/tags?post=55000073"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/yst_prominent_words?post=55000073"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}