Autor Beitrag
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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:
  1. Wie man ein lokales Repository auf einem externen Datenträger anlegt
  2. Wie man dieses Repository lokal auscheckt
  3. Wie man Dateien hinzufügt
  4. Wie man die hinzugefügten Dateien in das Sicherungsrepository sendet
  5. Wie man die Versionshistorie einsieht
  6. Wie man Dateien aus dem Repository wiederherstellt
  7. 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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...":
CreateRepoExt01

Hier setzt ihr das Häkchen für ein reines Repository:
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.

Das war es auch schon:
CreateRepoExt03

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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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...":
CheckoutRepoExt01

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:
CheckoutRepoExt02

Nun habt ihr einen lokalen Ordner, in dem ihr arbeiten könnt:
CheckoutRepoExt03
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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...":
AddFiles01

Im angezeigten Dialog wählt ihr die Dateien, die ihr sichern und versionieren wollt:
AddFiles02

Dann bekommt ihr eine entsprechende Bestätigung:
AddFiles03

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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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:
Commit01

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.
Commit02

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:
Commit03

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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 08.05.16 12:33 
5. Wie man die Versionshistorie einsieht

Ihr könnt nun im Kontextmenü auf TortoiseGit --> "Show log" klicken:
SeeLog01

Dann werden euch die Änderungen angezeigt, die ihr bisher gemacht habt:
SeeLog02

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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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:
Revert01

Mit einem Doppelklick bekommt ihr auch die Änderungen angezeigt (das Standard-Vergleichsprogramm ist etwas unübersichtlicher als das hier gezeigte):
Revert02

Nun könnt ihr die zurückzusetzenden Dateien auswählen und bekommt dann nach der Bestätigung die entsprechende Meldung, dass dies passiert ist:
Revert03

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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 08.05.16 13:18 
<Platzhalter>
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19
Erhaltene Danke: 1

Windows 7
RadStudioXE
BeitragVerfasst: Mo 09.05.16 15:15 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:

Als erstes müsst ihr TortoiseGit installieren. Den Download findet ihr unter:
tortoisegit.org/download/

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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19
Erhaltene Danke: 1

Windows 7
RadStudioXE
BeitragVerfasst: Mo 09.05.16 15:35 
Hi Nersgatt

Danke für deine prompte Antwort!

Gruss
Delbor
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3660
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 09.05.16 19:20 
user profile icondelbor hat folgendes geschrieben Zum zitierten Posting springen:
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.

user profile icondelbor hat folgendes geschrieben Zum zitierten Posting springen:
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.

user profile icondelbor hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19
Erhaltene Danke: 1

Windows 7
RadStudioXE
BeitragVerfasst: Mo 09.05.16 19:35 
Hi zusammen

Auch herzlichen Dank n an Martock und jaenicke für ihre aufschlussreichen Antworten!

Gruss
Delbor
oldprofiprog
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 35
Erhaltene Danke: 1



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 13.05.16 11:03 
Aber Git Sync ist da im Kontextmenü?
oldprofiprog
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 35
Erhaltene Danke: 1



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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.