IT-Wissen/git/README.md
Roger Rutishauser 8f0010a1ce update git
2025-01-15 13:59:57 +01:00

150 lines
2.8 KiB
Markdown

---
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
```
## Branch löschen
### Lokal löschen
```
git branch -d <branchname> (wenn gemergt)
git branch -D <branchname> (um zu erzwingen)
```
### Remote löschen
```
git push origin --delete <branchname>
```
## 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 <commit-id>
```
! nicht vergessen, anschliessend für remote anpassen:
```
git push -f
```
## Overwrite local history with remote
```
git fetch --all
git reset --hard <remote>/<branch-name>
```
## 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
```