Autor |
Beitrag |
jaenicke
Beiträge: 19288
Erhaltene Danke: 1743
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 08.05.16 12:31
Hallo,
nach dem Tutorial über SVN möchte ich nun auch zeigen wie man ganz einfach mit Git lokal und mit einem Server arbeitet.
Benötigt werden:
- Ein Tool, mit dem man auf das Repository, also die Sicherung zugreifen kann:
Das ist hier TortoiseGit, das direkt in den Windows Explorer integriert wird. Neuere Delphiversionen haben dafür bereits eine integrierte Unterstützung.
- Optional: Der Server, in dem die Dateiversionen verwaltet werden:
Hier benutze ich Bonobo Git Server, da er unter Windows am einfachsten zu installieren und zu nutzen ist und zudem in einer kostenlosen Version bereitsteht.
In diesem Tutorial zeige ich:
- Wie man ein lokales Repository auf einem externen Datenträger anlegt
- Wie man dieses Repository lokal auscheckt
- Wie man Dateien hinzufügt
- Wie man die hinzugefügten Dateien in das Sicherungsrepository sendet
- Wie man die Versionshistorie einsieht
- Wie man Dateien aus dem Repository wiederherstellt
- Und am Ende zeige ich auch noch wie man einen echten Server (in diesem Beispiel Bonobo Git Server) einrichtet und verwendet
Eine der Besonderheiten von Git im Vergleich zu herkömmlichen VCS wie CVS oder SVN ist, dass man auch einen anderen Ordner als Repository nutzen kann. Man braucht also nicht unbedingt einen eigenen Server.
Deshalb beginne ich das Tutorial mit einem Repository auf einem USB Stick und dem Zugriff darauf, der echte Server, der im SVN Tutorial noch ein zentraler Punkt war, folgt am Ende.
Der Übersicht halber folgen die einzelnen Themen in eigenen Posts.
Zuletzt bearbeitet von jaenicke am So 08.05.16 13:20, insgesamt 8-mal bearbeitet
Für diesen Beitrag haben gedankt: Christian S., doublecross, jfheins, justus, Martok, Narses, Nersgatt, ub60
|
|
jaenicke
Beiträge: 19288
Erhaltene Danke: 1743
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 08.05.16 12:31
1. Wie man ein lokales Repository auf einem externen Datenträger anlegt
Als erstes müsst ihr TortoiseGit installieren. Den Download findet ihr unter:
tortoisegit.org/download/
Solltet ihr noch XP einsetzen, müsst ihr eine ältere Version benutzen (findet ihr auch dort), die aktuelle Version unterstützt dies nicht mehr.
Bei der ersten Benutzung kommt ggf. die Aufforderung Git zu installieren, falls es noch nicht installiert ist.
Nach der Installation habt ihr neue Einträge im Kontextmenü des Windows Explorers. Nun legt ihr euch einen Ordner auf dem Datenträger an, der als Sicherung dienen soll. Dieser sollte mit .git enden (per Konvention). Ich benutze im Beispiel einen USB Stick, der den Nebeneffekt habt, dass ihr den auch zum Beispiel an euer Laptop stecken könnt und ganz ohne Server die Quelltexte auch damit synchronisieren könnt.
In dem Zielordner klickt ihr mit rechts und wählt "Git create repository here...":
Hier setzt ihr das Häkchen für ein reines Repository:
Ihr könnt auch direkt in dem Ordner arbeiten, in dem das Repository liegt, dann müsstet ihr das Häkchen nicht setzen. Darauf werde ich hier aber nicht näher eingehen.
Das war es auch schon:
Im nächsten Schritt müsst ihr nun auf dieses Repository zugreifen.
Einloggen, um Attachments anzusehen!
Zuletzt bearbeitet von jaenicke am Mo 09.05.16 19:13, insgesamt 6-mal bearbeitet
|
|
jaenicke
Beiträge: 19288
Erhaltene Danke: 1743
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 08.05.16 12:32
2. Wie man dieses Repository lokal auscheckt
Um nun ein lokales Arbeitsverzeichnis zu haben, könnt ihr den Inhalt des Repositories (im Moment also nichts), in ein lokales Verzeichnis auschecken.
Wenn ihr ein bestehendes Projekt habt und dieses in einem bestimmten Ordner lassen wollt, könnt ihr diesen vorher umbenennen, einen neuen Ordner mit dem Namen anlegen und nach dem Auschecken die Dateien vor Schritt 3 wieder zurück in den neuen Ordner schieben.
Nun klickt ihr in das gewünschte Verzeichnis mit rechts und wählt im Kontextmenü "Git clone...":
In dem dann aufgehenden Dialog tragt ihr als Repository das Verzeichnis ein, in dem ihr in Schritt 1 das Repository angelegt habt, im unteren den Zielordner. Standardmäßig wird ein Unterordner mit dem Namen des Repositories angefügt, das müsst ihr aber nicht so lassen:
Nun habt ihr einen lokalen Ordner, in dem ihr arbeiten könnt:
Den Ordner .git seht ihr nur, wenn ihr versteckte Dateien anzeigen eingeschaltet habt.
Im nächsten Schritt fügen wir nun Dateien in das Repository hinzu und senden diese in die Sicherung.
Einloggen, um Attachments anzusehen!
Zuletzt bearbeitet von jaenicke am So 08.05.16 13:54, insgesamt 3-mal bearbeitet
|
|
jaenicke
Beiträge: 19288
Erhaltene Danke: 1743
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 08.05.16 12:32
3. Wie man Dateien hinzufügt
Legt die Dateien, die ihr hinzufügen wollt (also zum Beispiel ein bestehendes Projekt) in dem Ordner ab, in den ihr in Schritt 2 ausgecheckt habt.
Dann klickt ihr mit rechts auf den Ordner und wählt im Untermenü "TortoiseGit" den Eintrag "Add...":
Im angezeigten Dialog wählt ihr die Dateien, die ihr sichern und versionieren wollt:
Dann bekommt ihr eine entsprechende Bestätigung:
Nun weiß Git, dass ihr diese Dateien hinzufügen möchtet. Nun muss dieser Inhalt noch an das Repository auf dem Sicherungsdatenträger geschickt werden. Das machen wir im nächsten Schritt.
Einloggen, um Attachments anzusehen!
Zuletzt bearbeitet von jaenicke am So 08.05.16 13:17, insgesamt 2-mal bearbeitet
|
|
jaenicke
Beiträge: 19288
Erhaltene Danke: 1743
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 08.05.16 12:33
4. Wie man die hinzugefügten Dateien in das Sicherungsrepository sendet
Aktuell habt ihr Git nun lediglich mitgeteilt, welche Dateien in das Repository hineingehören. Nun müsst ihr diese Änderung noch abschicken.
Dafür geht ihr im Kontextmenü des Ordners auf "Git commit --> "master"...". Daraufhin wird die Meldung bekommen, dass ihr Name und E-Mail-Adresse angeben sollt. Das könnt ihr nach einem Klick auf Yes auch direkt machen:
Danach könnt ihr dann im Commit-Dialog sehen welche Änderungen ihr habt (in diesem Fall "Dateien hinzugefügt"), könnt diese noch einmal prüfen (Vergleichsansicht per Doppelklick auf die einzelnen Dateien) und einen Kommentar eintragen was ihr in dieser Version gemacht habt. Danach bekommt ihr eine entsprechende Bestätigung.
Nun müsst ihr noch über den Eintrag "Git sync..." im Kontextmenü die Änderungen tatsächlich übertragen. Nach einem Klick auf Push bekommt ihr eine entsprechende Bestätigung:
Im nächsten Schritt sehen wir wie ihr eure Änderungen als Liste einsehen könnt.
Einloggen, um Attachments anzusehen!
Zuletzt bearbeitet von jaenicke am So 08.05.16 13:57, insgesamt 5-mal bearbeitet
|
|
jaenicke
Beiträge: 19288
Erhaltene Danke: 1743
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 08.05.16 12:33
5. Wie man die Versionshistorie einsieht
Ihr könnt nun im Kontextmenü auf TortoiseGit --> "Show log" klicken:
Dann werden euch die Änderungen angezeigt, die ihr bisher gemacht habt:
Die Markierung master ist eure lokale eingecheckte Version, origin/master zeigt an auf welchem Stand eure Sicherung bzw. das entfernte Repository ist.
Einloggen, um Attachments anzusehen!
Zuletzt bearbeitet von jaenicke am So 08.05.16 14:02, insgesamt 4-mal bearbeitet
|
|
jaenicke
Beiträge: 19288
Erhaltene Danke: 1743
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 08.05.16 12:33
6. Wie man Dateien aus dem Repository wiederherstellt
Nun nehmen wir einmal an euer Formular ist nicht mehr lesbar. Ihr möchtet es also wieder auf den letzten eingecheckten Stand zurücksetzen. Dafür gibt es den Befehl "Revert..." im Kontextmenü unter TortoiseGit. Ihr bekommt dort alle geänderten Dateien angezeigt:
Mit einem Doppelklick bekommt ihr auch die Änderungen angezeigt (das Standard-Vergleichsprogramm ist etwas unübersichtlicher als das hier gezeigte):
Nun könnt ihr die zurückzusetzenden Dateien auswählen und bekommt dann nach der Bestätigung die entsprechende Meldung, dass dies passiert ist:
Nun ist die Datei wieder auf dem funktionierenden Stand vor euren lokalen Änderungen. Vor dem committen sollten ihr natürlich immer sicherstellen, dass ihr auch eine korrekte Version eincheckt, d.h. normalerweise geht man jede Änderung noch einmal manuell durch bevor man diese abschickt.
Einloggen, um Attachments anzusehen!
Zuletzt bearbeitet von jaenicke am So 08.05.16 14:10, insgesamt 5-mal bearbeitet
|
|
jaenicke
Beiträge: 19288
Erhaltene Danke: 1743
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 08.05.16 12:35
7. Wie man einen echten Server einrichtet und verwendet
Dafür braucht ihr als erstes den Bonobo Git Server.
Wenn ihr diesen installiert habt, könnt ihr diesen im Browser aufrufen unter:
Quelltext 1:
| http://<IP des Servers>/Bonobo.Git.Server |
Mehr dazu folgt später...
Zuletzt bearbeitet von jaenicke am So 08.05.16 14:12, insgesamt 3-mal bearbeitet
|
|
jaenicke
Beiträge: 19288
Erhaltene Danke: 1743
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 08.05.16 13:18
|
|
Christian S.
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mo 09.05.16 09:06
Hallo,
ich habe die Diskussion zu alternativen Git-Clients hierhin abgeteilt. Jaenicke ist Autor dieses Tutorials und bestimmt daher seinen Inhalt.
Grüße
Christian
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Für diesen Beitrag haben gedankt: hydemarie, jaenicke, Narses, Nersgatt
|
|
delbor
Beiträge: 19
Erhaltene Danke: 1
Windows 7
RadStudioXE
|
Verfasst: Mo 09.05.16 15:15
Das verstehe ich nun so, das Git selbst gar nicht installiert werden muss(?) - was ich auf Grund eines deutschsprachigen Tutorials allerdings getan habe. Das heisst für mich: die jetzige installation wieder rausschmeissen und nach diesem Tutorial wieder neu installieren.
Zitat: | Nun legt ihr euch einen Ordner auf dem Datenträger an, der als Sicherung dienen soll. Dieser sollte mit .git enden (per Konvention). |
Solch einen Ordner hab ich, allerdings mit GitGui angelegt. Der Endet allerdings nicht auf'.git', sondern enthält, seit ich den zum Repository gemacht habe, einen UnterOrdner diesen Namens.
Zitat: | In dem Zielordner klickt ihr mit rechts und wählt "Git create repository here...":
[Bild: CreateRepoExt01]
Hier setzt ihr das Häkchen für ein reines Repository:
[Bild: CreateRepoExt02]
Ihr könnt auch direkt in dem Ordner arbeiten, in dem das Repository liegt, dann müsstet ihr das Häkchen nicht setzen. Darauf werde ich hier aber nicht näher eingehen. |
Mit der Git-GUI hab ich auch das Entwicklerverzeichnis(DelphiVCLCornerXE8) zu einem Repository gemacht. Da liegen alle Projekte, die ich in XE8 begonnen oder mit früheren Delphi-Versionen erstellt habe und mit XE8 weiterentwickle. Das ist aber offensichtlich falsch.
Wie ich das bis jetzt verstanden habe, müsste jedes einzelne Projektverzeichnis ein Repository sein.
Gruss
Delbor
|
|
Nersgatt
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: Mo 09.05.16 15:23
Ja, Du solltest Dir für jedes logisch zusammenhängende Projekt ein Repository erstellen. Das kann auch eine Projektgruppe sein, muss aber nicht so sein.
Wenn Du alles in ein Repository packst (was natürlich möglich wäre), kannst Du hinterher die einzelnen Änderungen und Versionen schlecht nachvollziehen.
Einzeln hat man es leichter.
_________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
|
|
delbor
Beiträge: 19
Erhaltene Danke: 1
Windows 7
RadStudioXE
|
Verfasst: Mo 09.05.16 15:35
Hi Nersgatt
Danke für deine prompte Antwort!
Gruss
Delbor
|
|
Martok
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Mo 09.05.16 17:59
Diese einzelnen Repositories kannst du dann allerdings mittels Submodules einfach wieder "zusammenstöpseln". Damit kannst du zum Beispiel ein Projekt und benötigte Bibliotheken zusammenfassen. Dabei zeigt ein Submodule immer auf eine bestimmte Revision des anderen Repositories, so dass man auch gleich eine bestimmte Version anfordern kann, ohne dass es alle anderen Projekte auch betrifft (im Gegensatz zu gemeinsam genutzer Unit im globalen Suchpfad zum Beispiel).
Hier hat Git ein gegensätzliches Modell zu SVN: in SVN kann man Unterverzeichnisse eines großen Repositories (Beispiel: Es gibt ein Repo "Spielprojekt", darin Ordner für Gameengine, Client, Server, Karteneditor,...) einzeln auschecken, in Git baut man eher das große Ganze aus unteilbaren Einzelteilen zusammen.
Man kann am Ende durchaus auch ein Repo haben, das selbst gar nichts enthält, nur Verweise auf Submodule.
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
Zuletzt bearbeitet von Martok am Mo 09.05.16 23:08, insgesamt 1-mal bearbeitet
|
|
jaenicke
Beiträge: 19288
Erhaltene Danke: 1743
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 09.05.16 19:20
delbor hat folgendes geschrieben : | Das verstehe ich nun so, das Git selbst gar nicht installiert werden muss(?) |
Doch, das hatte ich vergessen. Es kommt die Aufforderung, wenn es noch nicht installiert ist. Ich habe das ergänzt.
delbor hat folgendes geschrieben : | Zitat: | Nun legt ihr euch einen Ordner auf dem Datenträger an, der als Sicherung dienen soll. Dieser sollte mit .git enden (per Konvention). |
Solch einen Ordner hab ich, allerdings mit GitGui angelegt. Der Endet allerdings nicht auf'.git', sondern enthält, seit ich den zum Repository gemacht habe, einen UnterOrdner diesen Namens. |
Man kann dies verschieden machen. Um ein reines "Server-Repository" zu haben, würde ich es mit dem Ordner machen, der auf .git endet. Es geht aber auch anders, das ist kein echtes Problem.
delbor hat folgendes geschrieben : | Mit der Git-GUI hab ich auch das Entwicklerverzeichnis(DelphiVCLCornerXE8) zu einem Repository gemacht. Da liegen alle Projekte, die ich in XE8 begonnen oder mit früheren Delphi-Versionen erstellt habe und mit XE8 weiterentwickle. Das ist aber offensichtlich falsch.
Wie ich das bis jetzt verstanden habe, müsste jedes einzelne Projektverzeichnis ein Repository sein. |
Muss nicht unbedingt. Es kommt finde ich sehr darauf an was in dem Repository liegt. Wenn es komplett getrennte Projekte sind, machen eigene Repositories mehr Sinn, da man dann eine bessere Übersicht zu einzelnen Projekten hat.
Im Büro haben wir in einem Repository zum Beispiel mehrere Projekte zusammengefasst, die zu unserer Kassensoftware gehören, weil diese einfach viele Units gemeinsam verwenden.
|
|
delbor
Beiträge: 19
Erhaltene Danke: 1
Windows 7
RadStudioXE
|
Verfasst: Mo 09.05.16 19:35
Hi zusammen
Auch herzlichen Dank n an Martock und jaenicke für ihre aufschlussreichen Antworten!
Gruss
Delbor
|
|
oldprofiprog
Beiträge: 35
Erhaltene Danke: 1
|
Verfasst: Fr 13.05.16 09:56
Bin dabei von SVN auf Git zu wechseln.
Habe mich an diese Anleitung gehalten.
(Vielen Dank für die Mühe!)
Scheidere im Moment jedoch an einer Kleinigkeit.
Im Kontextmenü des Explorers fehlt der Menüpunkt Commit -> Master.
In den Settings ist dieser Schalter ausgewählt.
Was habe ich falsch gemacht?
Git-2.8.2-64-bit
TortoiseGit-2.1.0.0-64bit
Mit Gruß Peter
|
|
jaenicke
Beiträge: 19288
Erhaltene Danke: 1743
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 13.05.16 11:03
Aber Git Sync ist da im Kontextmenü?
|
|
oldprofiprog
Beiträge: 35
Erhaltene Danke: 1
|
Verfasst: Fr 13.05.16 11:44
Jetzt ja.
In einem Tutorial wurde geraten, bei der Installation von Git den Haken "Kontextmenü Explorer" wegzunehmen.
Jetzt ist mit der rechten Maustaste ein Menüeintrag Git vorhanden, der alle Untermenüs enthält.
Commit direkt als Menüpunkt scheint es nicht mehr zu geben. Über Sync und über "Prüfe auf Änderungen" kann ein Commit erfolgen.
Schade jetzt fehlt allerdings der Menüpunkt Git im alternativen Explorer ganz. (Speedcommander)
|
|
jaenicke
Beiträge: 19288
Erhaltene Danke: 1743
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 13.05.16 12:25
Hmm, bei dir sind die Befehle auf deutsch drin? Vielleicht ist das der Unterschied... ich benutze grundsätzlich nur die englische Variante.
Im Speedcommander sind die Befehle bei mir auch alle drin.
|
|
|