GIT Schummelzettel
Die Versionsverwaltung GIT hat sich
inzwischen in fast allen Software Bereichen zur Nummer aufgespielt und
Alternativen wie SVN (Subversion)
oder Mercurial abgelöst.
Ich persönlich schätze Softwarelösungen wie
TortoiseGIT sehr, mit denen man GIT Kommandos
direkt im Windows Explorer per Kontextmenü ausführen kann.
Doch wenn man direkt an der Linuxkonsole arbeiten muss und die grafischen
Spielereien fehlen, hilft es, wenn man ein paar GIT Szenarien
auch herunter tippen kann.
Hier also ein paar Zeilen, die ich hierfür immer wieder brauche:
GIT Setup
git config --global credential.helper store
- Aktiviert das Speichern von User und Passwörtern.
Ohne diese Einstellung darf man bei jeder GIT Synchronisation mit einem
Online Repository sein Passwort eintippen.
git config --global user.name "Your Name"
und
git config --global user.email "youremail@yourdomain.com"
- Ohne die Festlegung des eigenen Accounts + Passwort kann man keine
Commits durchführen.
GIT Projekte bearbeiten
GIT Repository and Branches verwalten
git clone path/to/project.git
- Erzeugt eine lokale Kopie eines GIT Projektes und checkt den
“default branch” des Projektes aus.
- z.B.:
git clone https://codeberg.org/GateNetwork/gate-blog-classroom.git
git branch --list
- Zeigt alle Branches des Projektes an.
git checkout BRANCHNAME
- Wechselt zu einem anderen Branch. Hat man im vorherigen Branch Änderungen
gemacht, die nicht commited wurden, werden diese auf den neuen Branch
angewendet, falls es dort zu keinen Konflikten kommt.
Dateien und Änderungen im GIT Repo verwalten
git status .
- Zeigt alle geänderten oder von GIT nicht erfassten Dateien im
aktuellen Verzeichnis an.
git add path/to/file
- Fügt eine neue oder geänderte Datei zur
Stage
-Dateiliste hinzu, damit
sie im nächsten Commit aufgenommen werden kann.
git add -all
- Fügt alle geänderten und neu hinzugefügte Dateien im aktuellen Verzeichnis
zur
Stage
Dateiliste hinzu, damit alle beim nächsten Commit aufgenommen
werden können.
git add -u
- Fügt alle Änderungen an Dateien im aktuellen Verzeichnis zur
Stage
Dateiliste hinzu. Es werden nur Änderungen von Dateien übernommen, die
schon im GIT-Index verzeichnet sind. Neue bzw. unbekannte Dateien
werden ignoriert.
git restore path/to/file
- Setzt eine Datei im Workspace zurück auf den Stand des letzten Commits.
git restore --staged path/to/file
- Setzt eine Datei im Workspace zurück auf den
Stage
-Stand als die Datei
zuletzt hinzugefügt wurde (z.B.: per git add
)
git mv path/to/old/filename path/to/new/changedname
- Benennt eine Datei um oder verschiebt sie in ein anderes Verzeichnis.
git rm path/to/file
- Löscht die angegebene Datei aus dem GIT Index und aus dem Dateisystem.
git rm -r path/to/folder
- Löscht das angegebene Verzeichnis und rekursive alle darin enthaltenen
Dateien.
git rm --cached path/to/file
- Löscht die angegebene Datei aus dem GIT Index, aber lässt sie im lokalen
Dateisystem bestehen.
Änderungen Synchronisieren
git fetch
- Lädt Änderungen vom Ursprungsrepository in das lokale Repository herunter,
aktualisiert den aktuellen Branch jedoch NICHT.
git pull
- Lädt Änderungen vom Ursprungsrepository herunter und aktualisiert alle
Dateien im aktuellen Branch. Bei Konflikten (also Änderungen sowohl lokal
als auch bei der Online-Quelle) wird der Vorgang abgebrochen.
git commit -m "Your Message"
- Sendet alle Änderungen von Dateien der
State
Dateiliste als Commit
zum lokalen Repository.
git push
- Lädt alle lokalen Commits zum Ursprungsrepository hoch.
Szenarios
Repository abgleichen
Um Änderungen in ein fremdes Repository zu mergen, wird
das Zielrepo geklont, dann das Quellrepo als remote
hinzugefügt,
gefetcht und dann als merge
integriert:
1git clone https://target.tld/path_to/my_project.git
2cd my_project
3
4git remote add sourcerepo https://source.tld/path_to/my_project.git
5git fetch sourcerepo
6git merge sourcerepo/master
7
8git push
Wenn das Quellrepo mit dem Zielrepo nichts gemeinsam hat, kann man das mit
git merge --allow-unrelated-histories sourcerepo/master
überbrücken.
Fortsetzung folgt