GIT: Unterschied zwischen den Versionen

(Branching)
 
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 157: Zeile 157:
 
<table>
 
<table>
  
== Sonstige GIT Themen ===
+
== Sonstige GIT Themen ==
 
=== Änderungen nach einem commit ===
 
=== Änderungen nach einem commit ===
 
<table width=100% cellspacing="5" align=center>
 
<table width=100% cellspacing="5" align=center>
Zeile 202: Zeile 202:
 
<tr align=left valign=middle>
 
<tr align=left valign=middle>
 
<td padding=1px>git tag -a v1.2 -m 'Version 1.2' 9fceb02</td><td padding=1px>Commit nachträglich Taggen mit Angabe der Check-Nummer</td></tr>
 
<td padding=1px>git tag -a v1.2 -m 'Version 1.2' 9fceb02</td><td padding=1px>Commit nachträglich Taggen mit Angabe der Check-Nummer</td></tr>
 +
<table>
 +
 +
=== Cloning ===
 +
<table width=100% cellspacing="5" align=center>
 +
<tr align=left>
 +
<th width=40% padding=1px>Kommando</th><th padding=1px>Beschreibung</th>
 +
</tr>
 +
<tr align=left valign=middle>
 +
<td padding=1px>git clone grit.git mygrit</td><td padding=1px>Lokales Repository grit.git nach mygrit clonen</td></tr>
 +
<tr align=left valign=middle>
 +
<td padding=1px>git clone git://github.com/schacon/ticgit.git</td><td padding=1px>Ein remote GIT clonen</td></tr>
 +
<tr align=left valign=middle>
 +
<td padding=1px>git remote</td><td padding=1px>Zeigt den externen Server</td></tr>
 +
<tr align=left valign=middle>
 +
<td padding=1px>git fetch origin</td><td padding=1px>Lädt die veränderten Dateien vom Original Repository herunter</td</tr>
 +
<tr align=left valign=middle>
 +
<td padding=1px>git push origin</td><td padding=1px>Lädt die Veränderungen aus dem lokalen Repository hoch</td></tr>
 +
<tr align=left valign=middle>
 +
<td padding=1px>git push origin v1.5</td><td padding=1px>Einen spezifischen Tag hoch laden</td></tr>
 +
<table>
 +
 +
=== Branching ===
 +
<table width=100% cellspacing="5" align=center>
 +
<tr align=left>
 +
<th width=40% padding=1px>Kommando</th><th padding=1px>Beschreibung</th>
 +
</tr>
 +
<tr align=left valign=middle>
 +
<td padding=1px>git branch testing</td><td padding=1px>Einen Branch erstellen</td></tr>
 +
<tr align=left valign=middle>
 +
<td padding=1px>git checkout testing</td><td padding=1px>Zum Branch testing wechseln</td></tr>
 +
<tr align=left valign=middle>
 +
<td padding=1px>git checkout -b testing</td><td padding=1px>Macht beides mit einem Kommando</td></tr>
 +
<tr align=left valign=middle>
 +
<td padding=1px>git checkout master</td><td padding=1px>Wieder zurück zum Master wechseln</td></tr>
 +
<tr align=left valign=middle>
 +
<td padding=1px>git branch –v</td><td padding=1px>Liste der Branches</td></tr>
 +
<tr align=left valign=middle>
 +
<td padding=1px>git merge testing</td><td padding=1px>Branch wieder in Master mergen. Braucht zuerst ein "git checkout master"</td></tr>
 +
<tr align=left valign=middle>
 +
<td padding=1px>git branch --merged</td><td padding=1px>Zeigt merged Branches</td></tr>
 +
<tr align=left valign=middle>
 +
<td padding=1px>git branch -d testing</td><td padding=1px>Löscht ein Branch z.B nach einem merge</td></tr>
 
<table>
 
<table>

Aktuelle Version vom 27. Oktober 2019, 19:56 Uhr

GIT Version Control

Übersicht

Git.png

Wichtige Links

Beschreibung

Eine Versionsverwaltung ist ein System, das zur Erfassung von Änderungen an Dokumenten oder Dateien verwendet wird. Alle Versionen werden in einem Archiv mit Zeitstempel und Benutzerkennung gesichert und können später wiederhergestellt werden. (Quelle: Wikipedia)

Im Unterschied zu anderen bekannten Produkte wie CVS, Subversion, Perforce, Bazaar usw. welche immer die Differenz, also die Deltas, der einzelnen veränderten Files speichern, macht GIT immer ein Snapshot der ganzen Repositories.

Alle Dateien in GIT haben einen von drei Zuständen:

  • Committed (eingepflegt)
  • Modified („geändert“)
  • Staged („vorgemerkt“)

GIT kennt drei Hauptbereiche

  • GIT Directory (Repository) -> Primäres Verzeichnis (Committed)
  • Working Directory -> Files in Arbeit (Modified)
  • Staging Area -> Bereit zur Einpflege (Staged)

Installation

Redhat: yum install git-core
Debian: sudo apt-get install git

Initiale Konfiguration

KommandoBeschreibung
git config --global user.name "John Doe"Eigener Name hinterlegen
git config --global user.email johndoe@example.comEigene E-Mail-Adresse hinterlegen
git config --global core.editor emacsEin spezifischer Editor festlegen
git config --listDie Konfiguration anschauen

Hilfe zu GIT

git help <verb>

Arbeiten mit GIT

Ein Repository einrichten

KommandoBeschreibung
mkdir <Verzeichnis>Ein leeres Verzeichnis erstellen
cd <Verzeichnis>In das angelegte Verzeichnis springen
git initGIT einrichten

Damit wird in diesem Verzeichnis das Unterverzeichnis .git angelegt

Spezifische Dateien ignorieren

Gewisse Dateien werden automatisch erstellt, z.B. Logfiles bei einem Testlauf, welche wir nicht in der Versionierung haben wollen. Diese können anhand bestimmter Muster in einem File ausgeschlossen werden.

Das File hat folgenden Namen: .gitignore

Der Inhalt könnte wie folgt aussehen:
*.[oa] -> Alle Files mit der Endung ".o" oder ".a"
*.log -> Alle Files mit der Endung ".log"

Ein Repository bevölkern

KommandoBeschreibung
cd <Verzeichnis>In das angelegte Repository springen
git add *Alle Dateien im Repository in die Staging Area laden
git commit -m 'Initiale Version'Dateien in Repo aufnehmen

Mit einem Repository arbeiten

KommandoBeschreibung
git statusZeigt den aktuellen Status des Repositories
git diffZeigt alle Unterschiede seit dem letzten commit
git diff --cachedZeigt nur die Unterschiede in der Staging Area
git add <Datei(en)>Fügt die Datei(en) in die Staging Area ein
git commit -m "Kommentar">Commitet all Dateien in der Staging Area

Files löschen

KommandoBeschreibung
rm <Datei(en)>Datei(en) physisch löschen
git rm >Datei(en)>Datei(en) zum Löschen in der Staging Area schreiben
git rm --cached <Datei(en)>Löscht die Einträge wieder aus der Staging Area
git commit -m "Kommentar">Commit der Löschung der Datei(en) in der Staging Area

GIT History

KommandoBeschreibung
git logZeigt die History der commits
git log -p -2Zeigt nur die letzten beiden Einträge der Änderungen
git log --statZeigt eine Statistik über die Commits
git log --since=2.weeksZeigt nur die commits der letzten zwei Wochen
gitkGraphische Version von git log

Sonstige GIT Themen

Änderungen nach einem commit

KommandoBeschreibung
git commit -m "Kommentar"Normaler commit
git add <Vergessene Datei>Vergessene Datei nachträglich in Staging Area bewegen
git commit --amendNachträglicher commit zu vorherigem

Änderungen in der Staging Area

KommandoBeschreibung
git reset HEAD <Datei>Datei aus der Staging Area löschen
git checkout -- <Datei>Änderungen in Datei gänzlich löschen

Tagging

KommandoBeschreibung
git tagZeit die aktuellen Tags an
git tag v1.4.1Setzen eines einfachen Tag
git tag -a v1.4 -m 'Version 1.4' Setzen eines kommentierten Tag
git show v1.4Zeigt Infos zu diesem Tag
git tag -a v1.2 -m 'Version 1.2' 9fceb02Commit nachträglich Taggen mit Angabe der Check-Nummer

Cloning

KommandoBeschreibung
git clone grit.git mygritLokales Repository grit.git nach mygrit clonen
git clone git://github.com/schacon/ticgit.gitEin remote GIT clonen
git remoteZeigt den externen Server
git fetch originLädt die veränderten Dateien vom Original Repository herunter</td
git push originLädt die Veränderungen aus dem lokalen Repository hoch
git push origin v1.5Einen spezifischen Tag hoch laden

Branching

KommandoBeschreibung
git branch testingEinen Branch erstellen
git checkout testingZum Branch testing wechseln
git checkout -b testingMacht beides mit einem Kommando
git checkout masterWieder zurück zum Master wechseln
git branch –vListe der Branches
git merge testingBranch wieder in Master mergen. Braucht zuerst ein "git checkout master"
git branch --mergedZeigt merged Branches
git branch -d testingLöscht ein Branch z.B nach einem merge