### Staging Area Initialisierung des neuen git Repositorys in einem leeren Verzeichnis. ``` mkdir local_repository cd local_repository git init ``` Anlegen einer neuen Text-Datei und einfügen einiger Zeilen Text ``` git add text.txt nano text.txt ``` Anzeigen des aktuellen Statuses und hinzufügen der Datei zu git Stage ``` git status git add text.txt ``` Anzeigen des aktuellen Statuses und Änderungen. Hinzufügen weiterer Zeilen Text in bestehende Datei. ``` git status git diff text.txt echo "Test" >> text.txt echo "1" >> text.txt ``` Anzeigen des aktuellen Statuses und erzeugung eines Commits. ``` git status git add text.txt git commit -m "1" ``` Die Commit-ID in der Ausgabe ist eine lange Zahl: commit 9a154e0f17b4ad7f... . Anzeigen Änderungen. ``` git log git diff text.txt ``` --- ### Staging Area Zurücksetzen der Datei auf Stage Stand und Anzeigen aktuellen Status. ``` git restore --staged text.txt git status ``` Anzeigen Änderungen in der Datei und Entfernung aus Stage ohne Zurücksetzen der Datei. ``` git diff text.txt git restore --staged text.txt ``` Anzeigen Status und Änderungen. Zurücksetzen auf den Stand im Commit und erneutes anzeigen des Statuses. ``` git status git diff text.txt git restore text.txt git status ``` --- ### Branching - Anlegen ``` echo "weitere Zeilen" >> text.txt git add text.txt git commit -m "2ersteDatei" echo "noch weitere Zeilen" >> text.txt git add text.txt git commit -m "3ersteDatei" git init git add text2.txt git commit -m "neue Datei" git branch test1 checkout test1 echo "weitere Zeilen" >> text.txt git add text.txt git commit -m "4ersteDatei" echo "weitere Zeilen" >> text.txt git add text.txt git commit -m "5ersteDatei" git log echo "weitere Zeilen" >> text2.txt git add text2.txt git status echo "weitere Zeilen" >> text2.txt git add text2.txt git commit -m "CommitDatei2" ``` ### Branching - Zweige wechseln Nr.1 ``` git switch master git status git checkout test1 git checkout -b test2 ``` ### Branching - Zweige wechseln Nr.2 ``` git reset master git status echo "weitere Zeilen" >> text.txt git switch test2 (Geht nicht, weil Änderung nicht committet) git add text.txt (Geht, weil Änderungen in Stage) git switch -f test2 git branch -m test1 test3 ``` ### Historie - Anzeigen Nr.1 ``` git switch test3 git log (Autor, Datum, Commit-Nachricht, Kennung) git log -1 git log --oneline git log --all ("Head" zeigt auf aktuellen Commit) git switch test2 git log ``` ### Historie - Anzeigen Nr.2 ``` git switch test3 echo "noch weitere Zeilen" >> text.txt git add text.txt git commit -am "1Commitin3" echo "noch weitere Zeilen" >> text.txt git add text.txt git commit -m "2Commitin3" echo "noch weitere Zeilen" >> text.txt git add text.txt git commit -m "3Commitin3" echo "noch weitere Zeilen" >> text.txt git add text.txt git commit -m "4Commitin3" git log git log --all ``` ### Merging - Konfliktfrei ``` git tag tag-test3 git switch test2 git tag tag-test2 git merge test3 git log --oneline --graph git reset --hard tag-test2 git switch test3 git merge test2 git log ``` ### Merging - Konfliktauflösung/Vorbereitung ``` git reset --hard tag-test3 git add text.txt git commit -m "Branchname zur zweiten Zeile" git tag tag-test3-conflict git switch test2 git tag tag-test2-conflict ``` ### Merging - Konfliktauflösung ``` git merge test3 git status git merge --abort git merge --no-commit --s recursive -X ours test3 cat text.txt cp text.txt git merge --abort git merge --no-commit --s recursive -X ours test3 diff text.txt text.txt.save git merge --abort ``` ### Rebase - Konfliktfrei Nr.1 ``` git checkout test2 git reset --hard tag-test2 git log --all git rebase test3 git log --all diff text.txt text.txt.save ``` ### Rebase - Konfliktfrei Nr.2 ``` git reset --hard tag-test2 git checkout test3 git rebase test2 git log --all diff text.txt text.txt.save ``` ### Rebase - Konfliktauflösung Nr.1 ``` git reset --hard tag-test3-conflict git checkout test2 git reset --hard tag-test2-conflict git rebase test3 git log --all ``` ### Rebase - Konfliktauflösung Nr.2 ``` git add text.txt git rebase --continue git log -all git rebase --continue git log git rebase --abort ```