|
| 1 | +# Git in der Shell // Befehle und Workflow |
| 2 | + |
| 3 | +## git init |
| 4 | + |
| 5 | +Initialisieren eines neuen Git Repository’s |
| 6 | + |
| 7 | +## git status |
| 8 | + |
| 9 | +Prüft den Zustand aller Projektdateien |
| 10 | + |
| 11 | +```json |
| 12 | +git status // Gibt den Zustand aller Dateien zurück |
| 13 | +git status -s // Kompaktere Auflistung |
| 14 | +``` |
| 15 | + |
| 16 | +## git add |
| 17 | + |
| 18 | +Fügt Dateien zum Staging hinzu, welche für den nächsten Commit vorgesehen werden. |
| 19 | + |
| 20 | +```json |
| 21 | +git add <Datei> // Setzt eine einzelne Datei auf Staging |
| 22 | +git add . // Setzt den aktuellen Zustand aller Dateien auf Staging |
| 23 | + |
| 24 | +git add --patch <Datei> // Einzelne Hunks auswählen |
| 25 | +``` |
| 26 | + |
| 27 | +## git commit |
| 28 | + |
| 29 | +Erstellt eine neue Version aus den Dateien welche sich im Staging befinden |
| 30 | + |
| 31 | +```json |
| 32 | +git commit -m "Nachricht" // Erstellt eine neue Version aus den Dateien im Staging |
| 33 | +git commit -am "Nachricht" // Überspringt Staging, Neue Dateien werden ignoriert |
| 34 | +``` |
| 35 | + |
| 36 | +--- |
| 37 | + |
| 38 | +## git log |
| 39 | + |
| 40 | +Zeigt die letzten Commits an |
| 41 | + |
| 42 | +```json |
| 43 | +git log // Zeigt die letzten Commits an |
| 44 | +git log -n 3 // Zeigt die letzten 3 |
| 45 | +git log --graph // Commits mit Graphen |
| 46 | +git log --oneline --decorate --graph --all |
| 47 | + |
| 48 | +git reflog // Zeigt alle Referenzen an |
| 49 | +``` |
| 50 | + |
| 51 | +## git diff |
| 52 | + |
| 53 | +Zeigt alle Unterschiede an zwischen Workspace und Lokales Repository |
| 54 | + |
| 55 | +```json |
| 56 | +git diff // Unterschiede anzeigen lassen |
| 57 | +git diff --staged // Für Dateien im Staging |
| 58 | +``` |
| 59 | + |
| 60 | +--- |
| 61 | + |
| 62 | +## git reset |
| 63 | + |
| 64 | +Änderungen einer/mehreren Dateien und Commits Rückgängig machen |
| 65 | + |
| 66 | +```json |
| 67 | +git reset // Holt alle Dateien aus Staging und behält alle Änderungen |
| 68 | +git reset <Datei> // gleiches, nur auf angegebene Datei |
| 69 | +``` |
| 70 | + |
| 71 | +## git restore |
| 72 | + |
| 73 | +Änderungen einer Datei Rückgängig machen |
| 74 | + |
| 75 | +```json |
| 76 | +git restore --staged <Datei> // Holt eine Datei aus Staging und behält alle Änderungen. |
| 77 | +git restore <Datei> // Setzt alle Änderungen einer Datei zurück |
| 78 | + |
| 79 | +git restore --staged --patch <Datei> // Einzelne Hunks auswählen |
| 80 | +``` |
| 81 | + |
| 82 | +## Letzte Commit-Message ändern |
| 83 | + |
| 84 | +```json |
| 85 | +git commit --amend |
| 86 | +// Anschließend öffnet sich dein normaler Editor und |
| 87 | +// du kannst eine neue Commit-Message eingeben |
| 88 | +``` |
| 89 | + |
| 90 | +## Eine Änderung dem letzten Commit hinzufügen |
| 91 | + |
| 92 | +```json |
| 93 | +// Mach deine Änderung |
| 94 | +git add . // oder füge einzelne Dateien hinzu |
| 95 | +git commit --amend --no-edit |
| 96 | +// Jetzt enthält dein letzter Commit auch die neuen Änderungen! |
| 97 | +// WARNUNG: Niemals solltest du "--amend" bei einem |
| 98 | +// Commit verwenden, der schon gepusht wurde (es sei denn |
| 99 | +// du bist der einzige Entwickler in dem Repo) |
| 100 | +``` |
| 101 | + |
| 102 | +## Letzten Commit Rückgängig machen |
| 103 | + |
| 104 | +```json |
| 105 | +git reset --soft HEAD~ // Macht den letzten Commit rückgängig, --> Staging |
| 106 | +git reset HEAD~ // letzter Commit Rückgangig, --> Workspace |
| 107 | +git reset --mixed HEAD~ // gleiches wie zuvor |
| 108 | +git reset --hard HEAD~ // Löscht alle Änderungen des letzten Commits |
| 109 | +``` |
| 110 | + |
| 111 | +## Älteren Commit Rückgängig machen |
| 112 | + |
| 113 | +```json |
| 114 | +// Finde den betreffenden Commit |
| 115 | +git log |
| 116 | +// Verwende die Pfeiltasten um in der History zu scrollen |
| 117 | +// und kopiere dir den Hash des betreffenden Commits |
| 118 | +git revert [betreffender hash] |
| 119 | +// git erstellt einen neuen Commit, der den gewählten |
| 120 | +// Commit rückgängig macht. Du musst dafür noch eine |
| 121 | +// Commit-Message eingeben oder einfach abspeichern |
| 122 | +``` |
| 123 | + |
| 124 | +## Änderungen einer einzelnen Datei Rückgängig machen |
| 125 | + |
| 126 | +```json |
| 127 | +// Finde den Hash eines Commits vor deinen Änderungen |
| 128 | +git log |
| 129 | +// Verwende die Pfeiltasten um in der History zu scrollen |
| 130 | +// und kopiere dir den entsprechenden Hash |
| 131 | +git checkout [gewählter hash] -- pfad/zur/datei |
| 132 | +// Die alte Version ist jetzt wiederhergestellt |
| 133 | +git commit -m "Änderungen an Datei XY Rückgängig gemacht" |
| 134 | +``` |
| 135 | + |
| 136 | +## Etwas komplett verkackt? |
| 137 | + |
| 138 | +Damit kannst du Dateien zurückholen, die du gelöscht hast, oder Dinge rückgängig machen, die dein Repo zerstört haben, oder einen nicht geglückten Merge oder einfach zu einem Stand zurückkehren, als bestimmte Dinge noch funktioniert haben |
| 139 | + |
| 140 | +```json |
| 141 | +git reflog |
| 142 | +// Du siehst eine Liste mit allem, was du in |
| 143 | +// git getan hast, in allen Branches. |
| 144 | +// Jeder Eintrag hat einen Index: HEAD@{index} |
| 145 | +// Finde den Eintrag VOR demjenigen, der alles |
| 146 | +// kaputt gemacht hat |
| 147 | +git reset HEAD@{index} |
| 148 | +// Alles ist jetzt wieder wie es vorher war |
| 149 | +``` |
| 150 | + |
| 151 | +--- |
| 152 | + |
| 153 | +## git branch |
| 154 | + |
| 155 | +Anzeigen, Erstellen und Löschen von Branches |
| 156 | + |
| 157 | +```json |
| 158 | +git branch <Name> // Erstellt einen neuen Branch |
| 159 | +git branch -l // Listet alle Branches auf |
| 160 | +git branch -d <Name> // Branch löschen |
| 161 | +``` |
| 162 | + |
| 163 | +## git checkout |
| 164 | + |
| 165 | +Erstellen und switchen von Branches |
| 166 | + |
| 167 | +```json |
| 168 | +git checkout -b <Name> // Erstellen eines neuen Branches |
| 169 | +git checkout <Name> // Wechseln in den angegeben Branch |
| 170 | +``` |
| 171 | + |
| 172 | +## git merge |
| 173 | + |
| 174 | +Führt mehrere Entwicklungsstände zusammen |
| 175 | + |
| 176 | +```json |
| 177 | +git merge <Branch> // Merged angegeben Branch in den aktuellen hinein |
| 178 | + |
| 179 | +``` |
| 180 | + |
| 181 | +## Ausversehen auf den master commited |
| 182 | + |
| 183 | +```json |
| 184 | +// Erstelle einen neuen Branch mit dem Stand des master |
| 185 | +git branch neuer-branch-name |
| 186 | +// Entferne den letzten Commit vom master |
| 187 | +// und wechsel zum neuen Branch |
| 188 | +git reset HEAD~ --hard |
| 189 | +git checkout neuer-branch-name |
| 190 | +// Dein Commit lebt jetzt in dem neuen Branch weiter :) |
| 191 | +``` |
| 192 | + |
| 193 | +## Im falschen Branch commited |
| 194 | + |
| 195 | +```json |
| 196 | +// Mach den letzten Commit rückgängig, aber erhalte die |
| 197 | +// Änderungen |
| 198 | +git reset HEAD~ --soft |
| 199 | +git stash |
| 200 | +// Navigiere zum richtigen Branch |
| 201 | +git checkout name-des-richtigen-branch |
| 202 | +git stash pop |
| 203 | +git add . // oder füge einzelne Dateien hinzu |
| 204 | +git commit -m "Deine Nachricht hier" |
| 205 | +// Jetzt sind die Änderungen auf dem richtigen Branch |
| 206 | +``` |
| 207 | + |
| 208 | +```json |
| 209 | +git checkout name-des-richtigen-branch |
| 210 | +// Wähle den letzten Commit vom master |
| 211 | +git cherry-pick master |
| 212 | +// Und lösche den Commit vom master |
| 213 | +git checkout master |
| 214 | +git reset HEAD~ --hard |
| 215 | +``` |
| 216 | + |
| 217 | +--- |
| 218 | + |
| 219 | +## git remote |
| 220 | + |
| 221 | +Mit Remote-Repositories arbeiten. |
| 222 | + |
| 223 | +```json |
| 224 | +git remote add origin <URL> // fügt den remote origin hinzu |
| 225 | +git remote // zeigt den aktuellen remote origin |
| 226 | +git remote get-url origin // zeigt die Remote URL |
| 227 | +git remote show origin // Zeigt alle Informationen zu einem Remote |
| 228 | +git remote -v // Alle Remotes mit URL's anzeigen |
| 229 | +git remote rename origin mario // Remote umbenennen |
| 230 | +git remote remove <name> // entfernt den remote origin |
| 231 | +``` |
| 232 | + |
| 233 | +## git clone |
| 234 | + |
| 235 | +Ein Remote-Repository lokal klonen/herunterladen. Gesamte git history von jeder Datei des Projektes wird heruntergeladen - .git Ordner initialisiert. Die aktuellste Arbeitskopie wird automatisch ausgecheckt. Somit kann auch ein Projekt welches Online beschädigt wird wiederhergestellt werden. |
| 236 | + |
| 237 | +```json |
| 238 | +git clone <url> // klont das Remote-Repository |
| 239 | +git clone <url> <verzeichnis> // Name des Projektverzeichnisses bestimmen |
| 240 | +git clone <url> ./ // aktuelles Vereichnis verwenden |
| 241 | + |
| 242 | +git remote -v // Schauen was drin steht nach dem klonen |
| 243 | +``` |
| 244 | + |
| 245 | +## git push |
| 246 | + |
| 247 | +```json |
| 248 | +git push // push mit default Werten |
| 249 | +git push -u origin // pushed das lokale Repository ins remote. -u ist der upstream |
| 250 | +``` |
| 251 | + |
| 252 | +## git fetch |
| 253 | + |
| 254 | +Holt den Stand aus dem Online Repository |
| 255 | + |
| 256 | +```json |
| 257 | +git fetch origin // Stand holen |
| 258 | + |
| 259 | +git merge origin/master // merged den lokalen Stand mit dem neuen Stand |
| 260 | +git rebase origin/master // Falls lokal Commits vorhanden sind |
| 261 | +``` |
| 262 | + |
| 263 | +## git pull |
| 264 | + |
| 265 | +Holt den Online-Stand und merged ihn automatisch mit dem lokalen Stand |
| 266 | + |
| 267 | +```json |
| 268 | +git pull origin // Holt den Online Stand |
| 269 | +git pull origin <Branch> // Holt einen bestimmten Online Branch |
| 270 | +``` |
0 commit comments