Versionsverwaltung mit Git auf der Konsole.

Eine komfortable Nutzerverwaltung bietet Gitolite.

Noch komfortabler geht mit einem Layer über Gitolite als Webinterface mit Code-Review und nennt sich Gitlab.

Um mehr über die Arbeit mit Git in Eclipse oder mit Gitlab zu erfahren empfiehlt sich das Thema Arbeiten mit Git in Gitlab und Eclipse EGit.

  1. Projekte erstellen / erhalten
  2. lokale Arbeit
    1. Dateien / Änderungen zur Staging Area hinzufügen / entfernen
    2. Statusabfrage von Staging Area und Working Directory
    3. Änderungen anzeigen
    4. Snapshots
    5. Branches
    6. History
    7. Tags
  3. remote Arbeit
    1. bei HTTPS den SSL-Schlüssel nicht verifizieren
    2. Repositories
    3. Update / Commit
  4. Checkout erzwingen
  5. Server einrichten
    1. Read-Only Mirror
  6. Quellen und Links

Projekte erstellen / erhalten

cd myNewProject
# Projekt erstellen:
git init

# oder vorhandenes Projekt aus Repository hohlen
git clone git://github.com/thomass/existingproject.git
# oder via gitolite
git clone user@git-server:existingproject.git
cd existingproject

lokale Arbeit

Dateien / Änderungen zur Staging Area hinzufügen / entfernen

# rekursiv alle Dateien / Änderungen hinzufügen
git add .
# einzelne Datei / Änderung hinzufügen
git add myFile
# wurden Dateien im Index nachträglich gelöscht, den Index updaten
git add -u

# einzelne Änderung entfernen
git reset HEAD -- myFile
# einzelne Datei nur aus Staging Area entfernen
git rm --cached myFile

Statusabfrage von Staging Area und Working Directory

# Kurzfassung
git status -s

# vollständige Informationen
git status

# ignorierte Dateien anzeigen
git status --ignored

Änderungen anzeigen

# Änderungen des Working Directorys (unstaged)
git diff

# Änderungen der Staging Area (staged)
get diff --cached

# alle Änderungen (un-/staged)
get diff HEAD

# kurze Zusammenfassung
get diff [--cached|HEAD] --stat

Snapshots

# mit Kommentar per vim
git commit

# mit Kurzkommentar
git commit -m 'Hier der Kurzkommentar'

# mit automatischem Hinzufügen von Änderungen (nicht neuer Dateien!)
git commit -a

Branches

# auflisten
git branch

# erstellen
git branch firstBranch

# wechseln
git checkout firstBranch

# erstellen und wecheln
git checkout -b secondBranch

# zusammenführen
git merge firstBranch

# umbenennen
git branch -m <oldBranch> <newBranch>

# löschen
git branch -d firstBranch

History

# anzeigen
git log

# Kurzfassung
git log --oneline

# mit Branch-Graph
git log --oneline --graph

# anderen Branch anzeigen
git log --oneline otherBranch

# Änderungen des Parent-Branch ausblenden
git log --oneline otherBranch ^parentBranch

Tags

# aktuellen Snapshot taggen
git tag -a 'Kommentar'

# älteren Snapshot über SHA-Hash nachträglich taggen
git tag -a 'Kommentar' 983qk3a

remote Arbeit

bei HTTPS den SSL-Schlüssel nicht verifizieren

env GIT_SSL_NO_VERIFY=true git ...

Repositories

# Aliase anzeigen
git remote

# Repositories ausführlich anzeigen (Alias + URL)
git remote -v

# hinzufügen
git remote -a <alias> <URL>

# entfernen
git remote rm <alias>

Update / Commit

# Änderungsinformation einholen und mergen
git fetch <alias>
git merge <alias>/<branch>

# Entfernten Branch lokal neu auschecken
git checkout -b <otherBranch> <alias>/<otherBranch>

# verbleibende Änderungen zurückspielen
git push <alias> <branch>

Checkout erzwingen

# vorher folgenden Befehl ausführen
git reset --hard HEAD

Server einrichten

1. auf dem Server:

# folgenden Git-Projektordner erstellen
mkdir /opt/git

2. auf Client mit Anfangsprojekt:

# blanke Kopie eines existierenden Projektes erstellen
git clone --bare myProject myProject.git

# diese auf den Git-Server kopieren
scp -r myProject.git user@gitserver:/opt/git

3. auf dem Server

# Rechte des Ordners '/opt/git/myProject.git' einstellen!
# zum Beispiel für Zugriff von Redmine über Apache:
chmod -R www-data:www-data /opt/git/myProject.git

Read-Only Mirror

  • von dem aktiv genutzten Git-Server A soll jede Änerung an einen passiven Git-Server B gepusht werden
  • von Git-Server B darf nur gelesen werden, sodass es nicht zu Konfliken kommt
  • im Repository-Verzeichnis von Git-Server A muss im Unterverzeichniss hooks ein post-receive Hook mit folgendem Inhalt angelegt werden:
    git push --mirror <remote-repo-url>
  • die Datei muss das Executable-Bit gesetzt haben
    chmod +x hooks/post-receive

Quellen und Links

Erstellt von ThomasS am 2014/07/31 12:53
    
Copyright 2004-2018 XWiki
7.4.5