GIT

Angelegt Montag 30 Juli 2018

Die wichtigsten Git-Kommandos für Einsteiger : https://thomas-leister.de/git-fuer-einsteiger/
git - Der einfache Einstieg : https://rogerdudler.github.io/git-guide/index.de.html
Startergit : https://www.youengineering.com/blog/startergit/
Pro Git (sehr gut!) : https://git-scm.com/book/de/v2
Learn Git with Bitbucket Cloud : https://www.atlassian.com/git/tutorials/learn-git-with-bitbucket-cloud
Merge vs. rebase : https://www.atlassian.com/git/tutorials/merging-vs-rebasing
Git Worktrees : https://mattshomepage.com/articles/2018/Feb/16/git_worktrees/
Git submodules: core concept, workflows, and tips : https://www.atlassian.com/blog/git/git-submodules-workflows-tips
GIT submodule : https://www.ralfebert.de/git/submodules/
Git Submodules: Adding, Using, Removing, Updating : https://chrisjean.com/git-submodules-adding-using-removing-and-updating/

Installation
W10 : https://git-scm.com/download/win

Konfiguration (https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration)
$ git --version : Installation überprüfen
$ git config --list : Konfiguration ausgeben
$ git config --global user.name "John Do
$ git config --global user.email johndoe@example.com
$ git config --global core.autocrlf true : EOL für Windows-System anpassen, so dass die Files mit CRLF ausgecheckt werden.
$ git config --global core.autocrlf input : EOL für Linux-System anpassen, so dass die Files mit LF ausgecheckt werden.

SSH-Zugriff auf remote git testen
Zuerst SSH einrichten: Private Key in ~/.ssh, Git-Provider in ~/.ssh/config eintragen.
$ ssh -T git@gitlab.com : Aufruf im richtig konfigurierten git-Verzeichnis liefert Begrüßungstext.

Basis-Kommandos
$ git status : Aktuelles Verzeichnis zu einem git machen
$ git status : Status (-s short)
$ git add file : File zum Commit vormerken.
$ git add . : alle Files+Subdirectories im aktuellen Direktory zum Commit vormerken (aber keine Löschungen).
$ git add -A : alle Änderungen zum Commit vormerken.
$ git commit -m "Kommentar" : Git commiten

Remote Repositories
$ git remote -v : Kurzname und Remote-Pfad für das gegebene Repository (default Kurzname origin).
$ git remote add origin git@gitlab.com:/user/repo2 : Remote-Pfad mit dem Kurznamen origin zum Repository dazufügen.
$ git clone git@gitlab.com:/user/repo2 : Das Repository repo2 in das aktuelle Verzeichnis clonen. Kurzname des remote-Repositories ist origin. (Voraussetzung für alles: ssh ist korrekt konfiguriert.)
$ git fetch origin : Das Repository mit dem Kurzname origin herunterladen.
$ git pull : Aktuelles Repository (mit allen Zweigen) herunterladen.
$ git pull origin : Das Repository mit dem Kurzname origin herunterladen und in das aktuelle Repository mergen.
$ git push / git push origin master : In das remote-Repository origin den Branch master schreiben. (Nur möglich, wenn dadurch keine Inkosistenzen entstehen.)
$ git push -u origin master : In das remote-Repository origin den Branch master schreiben und zusätzlich tracking information setzen (-u).
$ git remote show origin : Informationen über das remote-Repositry origin.
$ git remote rename oldname newname : Kurznamen für Remote-Pfad umbenennen.
$ git remote remove origin : Remote-Pfad origin entfernen.
$ git remote set-head origin stable : Den default-Pfad (also HEAD) im remote-Repo origin auf den Branch stable setzen.

Branches
$ git log : Zeigt u.a. auf welchen Zweig der HEAD-Pointer zeigt.
$ git branch -a : Zeigt alle Branches und markiert den, auf den der HEAD-Pointer zeigt. (-l nur vorhandene lokale Branches, -r nur vorhandene remote Branches.)
$ git branch testing : Branch testing erzeugen.
$ git checkout testing : Den Branch testing am HEAD-Pointer zur Verfügung stellen.
$ git checkout 56a4e5c08 : Ein Commit auschecken (führt zu einem "detached HEAD" d.h. abeiten ohne Branch).
$ git checkout -b newbranch : Neuen Zweig newbranch erzeugen und auf diesem weiterarbeiten.
$ git checkout -b zweigl origin/zweigl : Den Zweig zweigl aus dem remote-Repository origin auschecken und auf diesem weiterarbeiten.
$ git fetch / git checkout zweigl : Den lokal nicht vorhandenen Zweig zweigl aus dem remote-Repository origin auschecken und auf diesem weiterarbeiten.
$ git branch -d testbranch : Löscht einen gemergten Branch.
$ git branch -D testbranch : Löscht auch einen noch nicht gemergten Branch.
$ git merge newbranch : Den Branch newbranch in den aktuellen Branch mergen.

GIT zurücksetzen (https://www.andrerinas.de/tutorials/git-pull-erzwingen-force-lokale-dateien-zu-ueberschreiben.html?no_cache=1)
$ git fetch --all
$ git reset --hard origin/master