DCV 2022 03/Git: Unterschied zwischen den Versionen
Drlue (Diskussion | Beiträge) |
Drlue (Diskussion | Beiträge) |
||
| (13 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
== Git installieren == | Durch das verwenden von Git in der Kommandozeile, wird die Funktionionsweise von Git erst richtig verstanden. Je länger man Git verwendet um so fundierter wird das Wissen darüber. Weiters soll dadurch auch Erfahrung in der Kommandozeile erworben werden. Diese ist wichtig für den Serverbetrieb (Gnu/Linux) und für automatisierte Prozesse wie z.B.: [[Softwarequalitätsmanagement#CI/CD|CI/CD]], Scripting, etc.. | ||
Weiterführende Informationen oder um einfach einen Überblick über Git zu erhalten finden sich [[Softwarequalit%C3%A4tsmanagement#Versionskontrolle_-_Git|hier]]. | |||
== Benutzername und E-Mail-Adresse setzen == | |||
Folgende Daten werden, wenn gesetzt in Commit Nachrichten verwendet. Zur eingabe kann eine beliebige Kommandozeile gestartet werden. | |||
Wird --global weggelassen, so beziehen sich die Daten lediglich auf das aktuelle git Projekt | |||
{{BML|code= | |||
#E-Mail-Adresse | |||
git config --global user.email "test@test.com" | |||
#Name | |||
git config --global user.name "Test" | |||
}} | |||
== Git-bash installieren == | |||
Im folgenden wird '''git-bash''' installiert. Durch '''git-bash''' erhalten wir eine '''B'''ourne'''A'''gain'''SH'''ell, wie man Sie auf Gnu/Linux oder generell auf Unix ähnlichen System vorfindet. | Im folgenden wird '''git-bash''' installiert. Durch '''git-bash''' erhalten wir eine '''B'''ourne'''A'''gain'''SH'''ell, wie man Sie auf Gnu/Linux oder generell auf Unix ähnlichen System vorfindet. | ||
| Zeile 9: | Zeile 24: | ||
# '''git-bash''' öffnen | # '''git-bash''' öffnen | ||
# {{BSL|ssh-keygen -t ed25519 -C "your_email@example.com" | # {{BSL|ssh-keygen -t ed25519 -C "your_email@example.com" #Durch eigene Email ersetzen}} | ||
# Datei mit der Endung '''C:\Users\DCV\.ssh\id_ed25519.pub''' im Github Profile hinterlegen | # Datei mit der Endung '''C:\Users\DCV\.ssh\id_ed25519.pub''' im Github Profile hinterlegen | ||
== Mergetool einrichten == | |||
Gibt es Konflikte zwischen dem lokalen und dem remote Stand, so kann es erforderlich sein, dass manuell Dateien gemerged (zusammengeführt) werden müssen. Dafür benötigt man ein Mergetool. Hierfür wird '''meld''' verwendet. Wird die graphische Git Oberfläche von IntelliJ verwendet, so wird das IntelliJ eigene Mergetool verwendet. | |||
# '''meld''' [https://meldmerge.org/ hier] herunterladen und installieren | |||
# '''git-bash''' öffnen | |||
# {{BSL|vim ~/.gitconfig #Öffnet den Editor VIM}} | |||
# Mit i oder der einfügen Taste in den Insert Mode wechseln und folgenden Code '''hinzufügen''' | |||
# {{BML|code= | |||
[diff] | |||
tool = meld | |||
[difftool] | |||
prompt = false | |||
[difftool "meld"] | |||
cmd = "c:/Program\\ Files\\ \\(x86\\)/Meld/Meld.exe" "$LOCAL" "$REMOTE" | |||
[merge] | |||
tool = meld | |||
[mergetool "meld"] | |||
keepTemporaries = false | |||
cmd = "c:/Program\\ Files\\ \\(x86\\)/Meld/Meld.exe" "$LOCAL" "$BASE" "$REMOTE" --output "$MERGED" | |||
[mergetool] | |||
keepBackup = false | |||
}} | |||
# '''Esc''' drücken, ''':wq''' eingeben und mit Return bestätigen (w = write, q = quit) | |||
Sollte der Pfad in '''Schritt 5''', nicht dem installierten Pfad entsprechen, so muss dieser entsprechend angepasst werden. | |||
== Mit eigenem Branch arbeiten (Merge) == | |||
{{BML|code= | |||
//Neuen Branch erstellen | |||
git checkout -b feature/loginbutton | |||
//Arbeit wird getan | |||
git add . | |||
git commit -m "wip" | |||
git add . | |||
git commit -m "wip" | |||
git add . | |||
git commit -m "wip" | |||
git push origin feature/loginbutton | |||
//Neueste Änderungen vom main branch holen | |||
git fetch | |||
git rebase origin/main | |||
git push origin feature/loginbutton | |||
//Änderungen in den main branch bringen | |||
git checkout main | |||
git merge feature/loginbutton | |||
//gibt es Konflikte so müssen diese mit: | |||
git mergetool | |||
//aufgelöst werden, anschließend den Merge abschließen | |||
git merge --continue | |||
//Pushen auf main branch | |||
git push origin main | |||
//Zurück in den Branch wechseln | |||
git checkout feature/loginbutton | |||
//Branch vom server löschen | |||
//Zuerst muss man aus dem entsprechenden Branch rausgehen | |||
git checkout main | |||
//Löscht vom Server | |||
git push origin :feature/loginbutton | |||
//Branch lokal löschen | |||
git branch -D feature/loginbutton | |||
}} | |||
== Mit eigenem Branch arbeiten (Rebase) == | |||
{{BML|code= | |||
//Neuen Branch erstellen | |||
git checkout -b bernaswipbranch | |||
//Arbeit wird getan | |||
git add . | |||
git commit -m "wip" | |||
git add . | |||
git commit -m "wip" | |||
git add . | |||
git commit -m "wip" | |||
git push origin bernaswipbranch | |||
//Commits mit s squashen | |||
git rebase -i HEAD~3 | |||
git push origin bernaswipbranch -f | |||
//Neue Änderungen vom Server holen | |||
git fetch | |||
//Änderungen | |||
git rebase origin master | |||
git checkout master | |||
git merge bernaswipbranch | |||
git push origin master | |||
//Zurück in den Branch wechseln | |||
git checkout bernaswipbranch | |||
}} | |||
Aktuelle Version vom 23. Februar 2024, 20:31 Uhr
Durch das verwenden von Git in der Kommandozeile, wird die Funktionionsweise von Git erst richtig verstanden. Je länger man Git verwendet um so fundierter wird das Wissen darüber. Weiters soll dadurch auch Erfahrung in der Kommandozeile erworben werden. Diese ist wichtig für den Serverbetrieb (Gnu/Linux) und für automatisierte Prozesse wie z.B.: CI/CD, Scripting, etc..
Weiterführende Informationen oder um einfach einen Überblick über Git zu erhalten finden sich hier.
Benutzername und E-Mail-Adresse setzen
Folgende Daten werden, wenn gesetzt in Commit Nachrichten verwendet. Zur eingabe kann eine beliebige Kommandozeile gestartet werden.
Wird --global weggelassen, so beziehen sich die Daten lediglich auf das aktuelle git Projekt
#E-Mail-Adresse
git config --global user.email "test@test.com"
#Name
git config --global user.name "Test"
Git-bash installieren
Im folgenden wird git-bash installiert. Durch git-bash erhalten wir eine BourneAgainSHell, wie man Sie auf Gnu/Linux oder generell auf Unix ähnlichen System vorfindet.
- git-bash hier herunterladen und installieren
- Über einen Rechtsklick in einem beliebigen Ordner kann nun git-bash gestartet werden
Schlüsselpaar erstellen
Mittels eines Schlüsselpaares bestehend aus privatem und öffentlichen Schlüssel kann sich ein Client bei einem Git Repository authentifizieren sofern das ssh (Secure Shell) Protokoll verwendet wird.
- git-bash öffnen
ssh-keygen -t ed25519 -C "your_email@example.com" #Durch eigene Email ersetzen- Datei mit der Endung C:\Users\DCV\.ssh\id_ed25519.pub im Github Profile hinterlegen
Mergetool einrichten
Gibt es Konflikte zwischen dem lokalen und dem remote Stand, so kann es erforderlich sein, dass manuell Dateien gemerged (zusammengeführt) werden müssen. Dafür benötigt man ein Mergetool. Hierfür wird meld verwendet. Wird die graphische Git Oberfläche von IntelliJ verwendet, so wird das IntelliJ eigene Mergetool verwendet.
- meld hier herunterladen und installieren
- git-bash öffnen
vim ~/.gitconfig #Öffnet den Editor VIM- Mit i oder der einfügen Taste in den Insert Mode wechseln und folgenden Code hinzufügen
[diff] tool = meld [difftool] prompt = false [difftool "meld"] cmd = "c:/Program\\ Files\\ \\(x86\\)/Meld/Meld.exe" "$LOCAL" "$REMOTE" [merge] tool = meld [mergetool "meld"] keepTemporaries = false cmd = "c:/Program\\ Files\\ \\(x86\\)/Meld/Meld.exe" "$LOCAL" "$BASE" "$REMOTE" --output "$MERGED" [mergetool] keepBackup = false
- Esc drücken, :wq eingeben und mit Return bestätigen (w = write, q = quit)
Sollte der Pfad in Schritt 5, nicht dem installierten Pfad entsprechen, so muss dieser entsprechend angepasst werden.
Mit eigenem Branch arbeiten (Merge)
//Neuen Branch erstellen
git checkout -b feature/loginbutton
//Arbeit wird getan
git add .
git commit -m "wip"
git add .
git commit -m "wip"
git add .
git commit -m "wip"
git push origin feature/loginbutton
//Neueste Änderungen vom main branch holen
git fetch
git rebase origin/main
git push origin feature/loginbutton
//Änderungen in den main branch bringen
git checkout main
git merge feature/loginbutton
//gibt es Konflikte so müssen diese mit:
git mergetool
//aufgelöst werden, anschließend den Merge abschließen
git merge --continue
//Pushen auf main branch
git push origin main
//Zurück in den Branch wechseln
git checkout feature/loginbutton
//Branch vom server löschen
//Zuerst muss man aus dem entsprechenden Branch rausgehen
git checkout main
//Löscht vom Server
git push origin :feature/loginbutton
//Branch lokal löschen
git branch -D feature/loginbutton
Mit eigenem Branch arbeiten (Rebase)
//Neuen Branch erstellen
git checkout -b bernaswipbranch
//Arbeit wird getan
git add .
git commit -m "wip"
git add .
git commit -m "wip"
git add .
git commit -m "wip"
git push origin bernaswipbranch
//Commits mit s squashen
git rebase -i HEAD~3
git push origin bernaswipbranch -f
//Neue Änderungen vom Server holen
git fetch
//Änderungen
git rebase origin master
git checkout master
git merge bernaswipbranch
git push origin master
//Zurück in den Branch wechseln
git checkout bernaswipbranch