DCV 2022 03/Git: Unterschied zwischen den Versionen

Aus CCWiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
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..
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]]
  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 ==
== Git-bash installieren ==
Zeile 38: Zeile 49:
     keepBackup = false
     keepBackup = false
}}
}}
# '''Esc''' drücken, '''wq''' eingeben und mit Return bestätigen (w = write, q = quit)
# '''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.
  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.

  1. git-bash hier herunterladen und installieren
  2. Ü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.

  1. git-bash öffnen
  2. ssh-keygen -t ed25519 -C "your_email@example.com" #Durch eigene Email ersetzen
  3. 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.

  1. meld hier herunterladen und installieren
  2. git-bash öffnen
  3. vim ~/.gitconfig #Öffnet den Editor VIM
  4. Mit i oder der einfügen Taste in den Insert Mode wechseln und folgenden Code hinzufügen
  5. [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
    
  6. 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