Neu: switch und restore
| switch main | zum Branch wechseln |
| switch -c neu | Branch anlegen und wechseln create |
| switch - | zurück zum vorigen Branch wie cd - |
| switch --detach a1b2c3 | Commit ansehen, ohne Branch |
| restore datei | Änderung verwerfen |
| restore --staged datei | aus dem Index nehmen |
| restore -s HEAD~1 datei | Stand vor dem letzten Commit source |
Früher erledigte checkout beides. switch fasst nur Branches an, restore nur Dateien.
Alt gegen neu
| checkout main | heute switch main |
| checkout -b neu | heute switch -c neu |
| checkout -- datei | heute restore datei |
| reset HEAD datei | heute restore --staged datei |
Alltag
| status -sb | Stand kurz, mit Branch short, branch |
| add -p | Änderungen stückweise vormerken patch |
| commit -m "Text" | Commit anlegen message |
| commit --amend --no-edit | letzten Commit ergänzen |
| diff | was noch nicht vorgemerkt ist |
| diff --staged | was in den Commit geht |
| log --oneline --graph --all | Verlauf als Baum |
Branches
| branch | lokale Branches |
| branch --show-current | aktueller Branch |
| branch -m neuer-name | Branch umbenennen move |
| branch -d alt | gemergten Branch löschen, -D erzwingt delete |
| push -u origin HEAD | Branch erstmals pushen upstream |
Abgleich mit dem Server
| fetch --prune | holen, gelöschte Remote-Branches entfernen |
| pull --rebase | holen, eigene Commits oben drauf |
| push --force-with-lease | überschreiben, nur wenn niemand dazwischen gepusht hat |
| remote -v | Server-Adressen anzeigen verbose |
Nie --force ohne -with-lease: das überschreibt auch fremde Commits.
Zwischenablage
| stash push -m "Text" | Änderungen beiseitelegen |
| stash list | beiseitegelegtes anzeigen |
| stash pop | zurückholen und entfernen |
Rückgängig
| reset --soft HEAD~1 | letzten Commit auflösen, Änderungen bleiben |
| revert a1b2c3 | Gegen-Commit, sicher bei gepushten Commits |
| reflog | wo HEAD überall war, rettet fast alles |
| clean -n | zeigt, welche neuen Dateien -f löscht -n = nur zeigen |
Commits aufräumen
| commit --fixup a1b2c3 | Korrektur für einen älteren Commit |
| rebase -i --autosquash main | Korrekturen einsortieren interaktiv |
| rebase --abort | Rebase abbrechen |
Mehrere Arbeitskopien
| worktree add ../fix fix | Branch in eigenem Ordner |
| worktree list | alle Arbeitskopien |
| worktree remove ../fix | Ordner wieder entfernen |
Praktisch für einen schnellen Fix, ohne die laufende Arbeit zu stashen.
Einstellungen, einmalig
| push.autoSetupRemote true | push ohne -u beim ersten Mal |
| pull.rebase true | pull rebased immer |
| fetch.prune true | fetch räumt immer auf |
| rerere.enabled true | gelöste Konflikte wiederverwenden reuse recorded resolution |
| init.defaultBranch main | neue Repos starten mit main |
Setzen mit config --global schlüssel wert.