2.9 KiB
Git Commands
You can also review Oh Shit, Git!?!, for some good solutions to comon git problems.
Random Ideas
Kart: DVC for geospatial and tabular data. Git for GIS, Discussion, Go to Post from 2023-10-30T20:40:06
Use KeePassXC to sign your Git commits
Git Commands and Examples
Create a new branch locally within an already cloned repository:
git checkout -b <branch-name>
Delete a local branch:
git branch -d <branch-name>
Rebase onto the main branch:
git fetch
git rebase origin/main
git push origin HEAD -f
Abort a rebase:
git rebase --abort
Stash changes:
git stash
git stash pop
Revert a commit:
# Should work if only 1 commit was made
git reset --soft HEAD~1
# More forceful approach:
git revert cb7cf15b54ff09495201244b070d18d96d4703ce
git reset --hard HEAD~2
Show changes between two tags:
# Tag from previous version
git tag -a v0.1.0 -m "Release version 0.1.0"
# Add changes
git commit -am "add hint for change log"
# and more
# Add final tag for version
git tag -a v0.2.0 -m "Release version 0.2.0"
# Show diff between tags
git log v0.1.0..v0.2.0 --no-merges --format="%h - %s" --date=short
Git diff log between commits:
git log 79e28d9cef4cc777afc9e5b2569a5d34d9331867..6888fd61ae9d5744effcf27620a645e1750cbafc --no-merges --format="%h - %s (%an, %ad)" --date=short
Debug SSH connection via Git:
GIT_SSH_COMMAND="ssh -v"
git pull
unset GIT_SSH_COMMAND
Add executable flag on Windows:
git update-index --chmod=+x git_mirror.sh
Backup a repository from a source with all branches and tags.
# fresh clone
git clone --mirror <source-repo-url>
# existing local clone update
git fetch --all --tags --prune
#Optional: zip it
tar czf repo-backup.git.tar.gz repo.git
Restore a repository to a new destination with all branches and tags.
cd repo.git
git remote -v
git remote set-url origin <new-repo-url>
git remote -v
git push --mirror
Renaming branches:
# Delete remote branch
git push origin --delete wikiMaster
# Delete local branch
git branch -d wikiMaster
# Move branch
git branch -m main wikiMaster
# Push
git push origin HEAD
Wipe a whole git repository, removing all branches, tags, and history, leaving behind only a single, empty main branch.
git checkout --orphan main && \
git rm -rf . && \
git commit --allow-empty -m "Initialize empty main branch" --no-verify && \
git push origin main --force && \
git for-each-ref --format='%(refname:short)' refs/heads/ | grep -v '^main$' | xargs -I{} git push origin --delete {} && \
git tag -l | xargs -n 1 git push --delete origin