A cheat sheet for uncommon Git commands
| Command | Description |
| - | - |
| git config --global user.name "foo"
| Set user name |
| git config --global user.email "foo@example.com"
| Set user email |
| Command | Description |
| - | - |
| git branch foo
| Create a new branch |
| git branch -d foo
| Deletes a branch |
| git switch foo
| Switch to a branch |
| git switch -c\|--create foo
| Create and switch to a branch |
| git restore foo.js
| Undo all changes on the foo.js file |
| git checkout foo.js
| Undo all changes on the foo.js file |
| git checkout foo
| Use git switch
instead |
| git checkout -b foo
| Use git switch -c
instead |
| git merge foo
| Merge branch into current branch |
| Command | Description |
| - | - |
| git pull --rebase --prune
| Get latest, rebase any changes not checked in and delete branches that no longer exist |
| Command | Description |
| - | - |
| git add file.txt
| Stage file |
| git add -p
|–patch file.txt | Stage some but not all changes in a file |
|
git mv file1.txt file2.txt | Move/rename file |
|
git rm –cached file.txt | Unstage file |
|
git rm –force file.txt | Unstage and delete file |
|
git reset HEAD | Unstage changes |
|
git reset –hard HEAD | Unstage and delete changes |
|
git clean -f|–force -d | Recursively remove untracked files from the working tree |
|
git clean -f|–force -d -x` | Recursively remove untracked and ignored files from the working tree |
| Command | Description |
| - | - |
| git reset 5720fdf
| Reset current branch but not working area to commit |
| git reset HEAD~1
| Reset the current branch but not working area to the previous commit |
| git reset --hard 5720fdf
| Reset current branch and working area to commit |
| git commit --amend -m "New message"
| Change the last commit message |
| git commit --fixup 5720fdf -m "New message"
| Merge into the specified commit |
| git revert 5720fdf
| Revert a commit |
| git rebase --interactive [origin/main]
| Rebase a PR (git pull
first) |
| git rebase --interactive 5720fdf
| Rebase to a particular commit |
| git rebase --interactive --root 5720fdf
| Rebase to the root commit |
| git rebase --continue
| Continue an interactive rebase |
| git rebase --abort
| Cancel an interactive rebase |
| git cherry-pick 5720fdf
| Copy the commit to the current branch |
| Command | Description |
| - | - |
| git diff
| See difference between working area and current branch |
| git diff HEAD HEAD~2
| See difference between te current commit and two previous commits |
| git diff main other
| See difference between two branches |
| Command | Description |
| - | - |
| git log
| See commit list |
| git log --patch
| See commit list and line changes |
| git log --decorate --graph --oneline
| See commit visualization |
| git log --grep foo
| See commits with foo in the message |
| git show HEAD
| Show the current commit |
| git show HEAD^
or git show HEAD~1
| Show the previous commit |
| git show HEAD^^
or git show HEAD~2
| Show the commit going back two commits |
| git show main
| Show the last commit in a branch |
| git show 5720fdf
| Show named commit |
| git blame file.txt
| See who changed each line and when |
| Command | Description |
| - | - |
| git stash push -m "Message"
| Stash staged files |
| git stash --include-untracked
| Stash working area and staged files |
| git stash --staged
| Stash staged files |
| git stash list
| List stashes |
| git stash apply
| Moved last stash to working area |
| git stash apply 0
| Moved named stash to working area |
| git stash clear
| Clear the stash |
| Command | Description |
| - | - |
| git tag
| List all tags |
| git tag -a\|--annotate 0.0.1 -m\|--message "Message"
| Create a tag |
| git tag -d\|--delete 0.0.1
| Delete a tag |
| git push --tags
| Push tags to remote repository |
| Command | Description |
| - | - |
| git remote -v
| List remote repositories |
| git remote show origin
| Show remote repository details |
| git remote add upstream <url>
| Add remote upstream repository |
| git fetch upstream
| Fetch all remote branches |
| git rebase upstream/main
| Refresh main branch from upstream |
| git remote -v
| List remote repositories |
| git push --force
| Push any changes while overwriting any remote changes |
| git push --force-with-lease
| Push any changes but stop if there are any remote changes |
| git push --tags
| Push tags to remote repository |
| Command | Description |
| - | - |
| git submodule status
| Check status of all submodules |
git submodule sync
git submodule init
git submodule update
cd /submodule
git fetch origin <branch-name>
git checkout <branch-name>
cd /
## Creators 🔝
@hegdepavankumar |