Flight rules for Git

Git-Verzeichnisobjekte mit Branch Head Referenzen. Quelle: https://git-scm.com/book/de/v2/Git-Interna-Git-Referenzen

Git ist ein leistungsfähiges Werkzeug zur verteilten Versionsverwaltung von Dateien. Es wird häufig (eigentlich immer) von Entwicklern und Programmierern auf der ganzen Welt verwendet und es ist von großem Vorteil, sich mit dieser Technologie vertraut zu machen.

Das komplette Git Wissen kann im Buch „Pro Git“ unter https://git-scm.com/book/de/v2 nachgelesen werden. Der gesamte Inhalt ist unter der Creative Commons Attribution Non Commercial Share Alike 3.0 Lizenz lizenziert, kann aber auch als gedruckte Version des Buchs auf Amazon gekauft werden.

Neben der deutschen Version ist das Pro Git Buch auch in diversen anderen Sprachen abrufbar (z.B. English, Deutsch, Español, Français, Nederlands, etc.).

Ein großes Problem für Anfänger und Fortgeschrittene ist immer die korrekte Nutzung der verfügbaren Git Befehle. Man kann in dem Por Git Buch zwar theoretisch alles finden und das Inhaltsverzeichnis ist auch sehr gut, aber von Zeit zu Zeit (häufiger als man denkt …) passiert es, dass man genau das nicht findet was man gerade benötigt. In dem Fall kann man natürlich Stackoverflow bemühen und hoffen, dass die Lösung der besten Antwort alles nicht noch schlimmer macht. Damit fährt man eigentlich schon ganz gut, aber besonders ein Git Anfänger kann hier auch mal auf die Nase fallen und muss dann doch den Kollegen aus dem Nachbarbüro bemühen, das Repository wieder zu korrigieren.

Mit dem Problem hat sich auch schon Kate Hudson herumschlagen müssen und ein Projekt ins Leben gerufen, mit dem das Problem gelöst werden kann.

Flight rules for Git

Herausgekommen sind die „Flight rules for Git“ (https://github.com/k88hudson/git-flight-rules) die in folgenden Sprachen verfügbar sind (English, Español, Русский, 简体中文, 한국어, Tiếng Việt, Français, 日本語) und anhand von real existierenden Git-Tasks/Problemen Lösungen bereitstellt die sich als Best Practices bewährt haben.

Die „Flight rules for Git“ werden regelmäßig von den aktuell über 100 Mitwirkenden aktualisiert und erweitert und sind die optimale Ergänzung zum Pro Git Buch.

Flight rules for Git Alternativen und Diskussionen

Wie alle erfolgreichen Projekt werden auch die „Flight rules for Git“ kontrovers diskutiert und es gibt auch einige Kritik an dem Projekt wie man z.B. unter https://news.ycombinator.com/item?id=18229527 lesen kann und es gibt auch andere kreative Köpfe, die sich schon mit dem Problem beschäftigt haben (Z.B. https://ohshitgit.com/ und http://h2.jaguarpaw.co.uk/posts/git-survival-guide/ ) die alle ähnlich aufgebaut sind und vergleichbare Probleme lösen. Wer hier am Ende von wem abgeschrieben hat lässt sich vermutlich im Nachhinein nicht mehr nachvollziehen, aber wenigsten die „Flight rules for Git“ stehen ja unter der CC-BY-SA-4.0 License und man darf die Inhalte unter den Bedingungen der CC-BY-SA-4.0 nutzen, anpassen und weiterverbreiten.

Flight rules for Git Aufbau

Im Gegensatz zu einem klassischen Lehrbuch haben die „Flight rules for Git“ einen ganz anderen Ansatz und beschäftigen sich immer nur mit konkreten Anwendungsfällen und den dazu passenden Befehlen. Hier ein paar

Flight rules for Git Beispiele

I want to start a local repository

To initialize an existing directory as a Git repository:

(my-folder) $ git init
I want to clone a remote repository

To clone (copy) a remote repository, copy the URL for the repository, and run:

$ git clone [url]

This will save it to a folder named the same as the remote repository’s. Make sure you have a connection to the remote server you are cloning from (for most purposes this means making sure you are connected to the internet).

To clone it into a folder with a different name than the default repository name:

$ git clone [url] name-of-new-folder
What did I just commit?

Let’s say that you just blindly committed changes with git commit -a and you’re not sure what the actual content of the commit you just made was. You can show the latest commit on your current HEAD with:

(main)$ git show
Delete/remove arbitrary commit

The same warning applies as above. Never do this if possible.

$ git rebase --onto SHA1_OF_BAD_COMMIT^ SHA1_OF_BAD_COMMIT
$ git push --force-with-lease [remote] [branch]
Apply a specific stash from list

First check your list of stashes with message using

$ git stash list

Then apply a specific stash from the list using

$ git stash apply "stash@{n}"

Here, ’n‘ indicates the position of the stash in the stack. The topmost stash will be position 0.

Furthermore, using a time-based stash reference is also possible.

$ git stash apply "stash@{2.hours.ago}"
I want to change a file name’s capitalization, without changing the contents of the file
(main)$ git mv --force myfile MyFile
I want to overwrite local files when doing a git pull
(main)$ git fetch --all
(main)$ git reset --hard origin/main
I want to remove a file from Git but keep the file
(main)$ git rm --cached log.txt

Fazit

Ich habe immer eine lokale Kopie der der Flight rules for Git als PDF Export auf der der Festplatte liegen. Und auch wenn ich es nicht jeden Tag brauche, habe ich doch meistens einen Acrobat Reader mit den light rules for Git offen.