- Initialisiere in einem neuen Ordner eine git repository.
$> mkdir my_fancy_project ; cd my_fancy_project ; git init
- Zeige Dir deine lokalen Branches an.
$> git branch
- Erstelle eine neue Branch.
$> git branch new_branch -> erstellt nur die neue Branch wechselt nicht in diese
$> git checkout -b new_branch -> erstellt und wechselt in neue erstellte Branch
- Zeige Status deiner Branch
$> git status
- Erstelle eine Datei, tracke die Datei und commite diese.
$> touch <new_file> ; git add <new_file> ; git commit -m "mein neue Datei" -> commitet direkt ohne Umweg mittles Editor
$> touch <new_file> ; git add <new_file> ; git commit -> öffnet Editor
- Wechsel in die Branch 'not_master'
$> git checkout not_master
- Zeige diff von Deiner development Branch zur master branch
$> ( git checkout development ; ) git diff master
-> Nutzer sollte in Branch development sein dafür
$> git diff development master -> Nutzer muss nicht in der Branch sein
- Finde heraus Wer wann die Datei 'my_awesome_code.cpp' in Zeile 212, folgende 10 Zeilen editiert hat
$> git blame -> und geht in Zeile 212 und prüft die Folgenden Zeilen
$> git blame -L 212,+10 -> zeigt ab Zeile 212 die nächsten 10 Zeilen
- Liste alle Remote Endpunkte einer deiner lokalen Repository.
$> git remote -v -> beste Lösung -> alternative über .git/config einsehbar
- Füge eine neuen Remote Endpunkt 'gitserver' hinzu.
$> git remote add gitserver https://gitserver.com/awesomedev/fancyprojct -> für eine https Endpunkt
$> git remote add gitserver [email protected]:awesomedev/fancyprojct -> für einen ssh Endpunkt
- Push deine lokale 'feature' Branch zum neuen Entpunkt 'gitserver'
$> git push gitserver feature
- Nenne deine Branch 'new_features' nach 'new_feature' um.
$> (git checkout new_features ; ) git branch -m new_feature -> nennt aktuell Branch um
$> git branch -m new_features new_feature -> bennet die Branch new_features nach new_feature um
- Merge Branch new_feature in deine master Branch.
$> git checkout master ; git merge new_feature
- Lass Dir die Commits anzeigen.
$> git log
- Finde alle Commits von Commiter 'Erik'.
$> git log --author=Erik
- Finde Commits mit Ticket Nummer 'SPRINT#032019'.
$> git log --grep=SPRINT#032019
- Lösche Datei 'file/old_code/dirty_function.cpp' aus deiner Repository und commite anschießen
$> git rm file/old_code/dirty_function.cpp ; git commit -m "[remove] dirty function finaly removed"
- Du stellst fest das Deine letzter Commit ein nicht die Richtige Ticket Nummer beinhaltet, passe diese bitte an.
$> git commit --amed -> öffent den Editor
$> git commit --amed -m "[Tricket#1234] better code" -> setzt Commit Message direkt
- Zeige Dir die letzten Commit mit Änderungen an
$> git log -p
- Fasse die letzten drei Commits zusammen.
$> git log -n 4 -> Anzeigen der letzen vier Commits
$> git rebase --interactive (-i) <sha1 von commit 4> -> öffent Editor
pick 5543f43 add a typo f 1dfcc01 add copywrite f 7b6e4c7 fix typo
-> Option (s)quash [behält den Commit Message] und (f)ixup [verwirft Commit Message] werden genutzt
- Zeige File 'path/to/dirty_code.php' aus Branch 'awesome_feature_branch'.
$> git show awesome_feature_branch:path/to/dirty_code.php
- Du hast in Deiner Repository mehere Änderungen im Tagesverlauf vorgenommen. Am Nachmittag hast Du mit einem Kollegen eine Rücksprache und es stellt sich herraus, dass Du einen Commit nicht mehr brauchst. Wie entfernst Du aus Deiner nicht gepushten Branch den dritten Commit von füunf aus dem Tagesverlauf ohne das dir andere Commits verloren gehen.
$> git log ` commit 6ff06328b635bd06a513d9cb0403206f46961f31 Author: awesome dev [email protected] Date: Fri May 3 10:12:46 2019 +0200
add copywrite
commit bfbcdd14e9d73263494eaaa826a4c4b0779b1040 Author: awesome dev [email protected] Date: Fri May 3 10:12:06 2019 +0200
add a typo
commit 2d035d0b939f150ea83a5636a33fbeb828aea67c Author: awesome dev [email protected] Date: Fri May 3 10:10:58 2019 +0200
add a poem
commit beeb9c740a9c3a8788d853ea3381dd46b7cbfe75 Author: awesome dev [email protected] Date: Fri May 3 10:09:02 2019 +0200
add another line
commit b140677047d013f7ca6b418c8d94d70db1152416 Author: awesome dev [email protected] Date: Fri May 3 10:08:26 2019 +0200
file cration
`
$> git rebase --interactive (-i) beeb9c740a9c3a8788d853ea3381dd46b7cbfe75 -> entfernen der Zeile mit dem zu entfernenten Commit, sichern der Datei im Editor
! mögliche Rebase Konflikte auflösen (kann Aufträten muss aber nicht)
$> vim file ; git add file ; git rebase --continue
$> git log -> nach rebase
` commit 1dfcc019401a8ec4af2ae77c2bf9cbd0e4bcb174 Author: awesome dev [email protected] Date: Fri May 3 10:12:46 2019 +0200
add copywrite
commit 5543f437f30fbfff10f8585b00d79ed6958e283b Author: awesome dev [email protected] Date: Fri May 3 10:12:06 2019 +0200
add a typo
commit beeb9c740a9c3a8788d853ea3381dd46b7cbfe75 Author: awesome dev [email protected] Date: Fri May 3 10:09:02 2019 +0200
add another line
commit b140677047d013f7ca6b418c8d94d70db1152416 Author: awesome dev [email protected] Date: Fri May 3 10:08:26 2019 +0200
file cration
`
- Zeige Dir nur die SHA1 und Commit Message an.
$> git log --oneline