GIT Schummelzettel

(Zurück zu: Infos)

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


(Zurück zu: Infos)
📧 📋 🐘 | 🔔
 

Meine Dokus über:
 
Weitere externe Links zu:
Alle extern verlinkten Webseiten stehen nicht in Zusammenhang mit opengate.at.
Für deren Inhalt wird keine Haftung übernommen.



Wenn sich eine triviale Erkenntnis mit Dummheit in der Interpretation paart, dann gibt es in der Regel Kollateralschäden in der Anwendung.
frei zitiert nach A. Van der Bellen
... also dann paaren wir mal eine komplexe Erkenntnis mit Klugheit in der Interpretation!