--- gitea: none include_toc: true --- # Git ## delete branch Lokal Branch löschen z.B. wenn er auf Origin in master gemergt wurde. ``` // delete branch locally git branch -d localBranchName // delete branch remotely git push origin --delete remoteBranchName ``` ## master updaten auf Stand von origin/master ``` git checkout master git pull git reset --hard origin/master git pull ``` ## Lokal ausgecheckter Feature-Branch in master mergen Vorgehensweise: Lokal in den master-Branch mergen und dann nach origin/master pushen. Der übliche Weg sieht etwa so aus (ohne Pull-Request-Workflow): - Auf master wechseln (lokal): `git checkout master` - Aktuellste Änderungen von origin/master holen und mit lokalem master synchronisieren: `git pull origin master` - Deinen Feature-Branch in den lokalen master mergen (angenommen, Dein Branch heißt feature/mybranch): `git merge feature/mybranch` - Falls Merge-Konflikte auftreten, diese im Code beheben, Dateien committen, sodass der Merge abgeschlossen werden kann. - Änderungen auf den Remote-Master pushen: `git push origin master` Nun ist der Code aus `feature/mybranch` in `origin/master` eingeflossen. ## Remote Branch als neuen local branch ``` git fetch origin # Anzeigen aller Branches git branch -a # zuerst local dann origin-name angeben: git checkout -b INITIATIVE-242_Ru origin/INITIATIVE-242_Ru ``` ## Tag löschen ### Lokal ``` git tag -d tagname ``` ### Remote ``` git push --delete origin tagname ``` ## 1 oder mehrere Commits zurück ### 1 Schritt zurück ``` git reset --hard HEAD~1 ``` ### Mehrere Schritte zurück ``` git reset --hard ``` ! nicht vergessen, anschliessend für remote anpassen: ``` git push -f ``` ## Overwrite local history with remote ``` git fetch --all git reset --hard / ``` ## Eigenen Branch mit dem Master-Branch aktualisieren ``` git checkout master git pull git checkout xyz git rebase -i master ``` ... hier die Konflikte lösen ... ``` git add . git rebase --continue git push --force-with-lease ``` ## Neuer Branch aus falschem Branch ### Ausgangslage Neuer Branch (b) wurde fälschlicherweise aus einem anderen Branch (a) (anstatt dem Master) erstellt. Die Files aus (a) sind nun doppelt vorhanden, nämlich auch in (b). Bei einem Pull-Request für (b) sind dann die files auch von (a) drin. ### Problemlösung ``` git checkout master git pull git checkout (b) git pull git rebase -i master ``` bei den commits aus (b), also die, die nicht in den neuen branch gehören, ein d vorne dran (anstatt bestehendem pick) und speichern ``` git log (zum prüfen ob ok) git push --force-with-lease ```