Das lokale Verzeichnis c:\develop\my_project
soll auf dem NAS verfügbar gemacht werden. Die Freigabe der NAS ist als Laufwerk X:\ eingebunden.
Im ersten Schritt die Quelle vorbereiten. Es wird eine Kopie vom aktuellen lokalen Repositiory ohne Arbeitsverzeichnis erzeugt. Die Kopie wird auf das NAS verschoben.
cd c:\develop git clone --bare my_project my_project.git xcopy my_project.git x:\repros\my_project.git /S /E rd my_project.git /S /Q |
Abschließend wird das lokale Arbeitsverzeichnis mit dem neue Repositiory für den gemeinsamen Austausch verbunden.
cd c:\develop\my_project git remote add origin x:\repros\my_project.git git remote -v git remote show origin |
Nun können Änderungen auf dem NAS veröffentlicht werden.
cd c:\develop\my_project git status git commit -am "my important comment" git log -1 git show-branch *master git push origin master |
Diff
# Änderungen prüfen git diff --check # Änderungen zum Parent git show --color --pretty=format:%b XXXXXX git diff-tree -p XXXXXX |
siehe auch Git-Referenz in Bildern
Taggen
git tag -a v0.2 -m "Version 2020/08, Abc, Def" git push origin --tags git tag -l git show v0.2 # delete tag git tag -d v0.2 git push origin --delete v0.2 |
siehe auch Erklärung im Grundlagen-Kapitel
Alias
aufwendige Parameterketten zusammenfassen/verinfachen
git config --global alias.lg "log --all --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit" git lg |
Zeilenende
automatische Ersetzung ausschalten (ggf. VSCode Strg+P „Change End of Line sequence“)
git config --global core.autocrlf false |
siehe auch Git Zeilenenden, empfohlen wird \n
stash
# Halt work on the branch feature-X git stash git checkout -b feature-Y origin/main # Hack, hack, hack… git checkout feature-X or git switch - git stash pop # Resume work on feature-X |
siehe auch 4 tips for context switching in Git
Branches
# Branch "develop" erstellen und aktivieren git checkout -b develop # alle Branches zeigen git branch -avv # Remote-Branch holen git checkout --track origin/newsletter # einzelne Datei aus Branch feature-xyz übernehmen git show feature-xyz:docs/demo.txt git switch master git checkout --patch feature-xyz docs/demo.txt # Branch "master" öffnen und "develop" einarbeiten git checkout master git merge develop # Branch "develop" löschen git branch -d develop git push origin --delete origin/develop git fetch --prune # lists branches merged into master git branch --merged master |
Mit for branch in `git branch -r --merged | grep -v HEAD`; do echo -e `git show --format="%ci %cr %an" $branch | head -n 1` \\t$branch; done | sort -r
werden die Branches und ihre Autoren aufgelistet.
Sonstiges
git config --global user.name "Karl Mustermann" git config --global user.email karl@mustermann.de # git config --global --edit git commit --amend --reset-author |
# Änderung ohne Commit (vor Stage) rückgängig machen git checkout -- hosts.txt # lokale Änderungen zurücksetzen (-n ist Vorschau) git fetch origin git reset --hard origin/master git clean -n -f # eine Vaiable im Arbeitsverzeichnis abfragen git config --get --bool core.bare # Änderung im Arbeitsverzeichnis rückgangig machen git reset hosts.txt # mit erstem Push den Upstream konfigurieren # im Anschluss nur noch: git push git push --set-upstream origin master # Benutzer nachträglich ändern git config --global --edit git commit --amend --reset-author # Wartung durchführen git count-objects -v git fsck --full git gc --auto git remote set-url origin https://git.meine.de/ich/REPO.git git pull origin master --allow-unrelated-histories # Dateien vom Commit git show --pretty="" --name-only 16f0 # Repo durchsuchen git rev-list --all | xargs git grep -F 'dbtool' # Repo aufräumen git gc --prune=now --aggressive # Commits zählen git rev-list --count feature-fa |
siehe auch: Git version control with Eclipse (EGit), A guide to Git… oder How to fix a broken repository?