docs-onboarding/know-how/git-commands.md

2.4 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