A cheat sheet for uncommon Git commands.
Configuration
Command | Description |
---|---|
git config --global user.name "foo" | Set user name |
git config --global user.email "foo@example.com" | Set user email |
Branches
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 |
Pulling
Command | Description |
---|---|
git pull --rebase --prune | Get latest, rebase any changes not checked in and delete branches that no longer exist |
Staged Changes
Command | Description |
---|---|
git add file.txt | Stage file |
git add -p | –patch file.txt` |
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 |
Changing Commits
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 |
Compare
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 |
View
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 |
Stash
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 |
Tags
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 |
Remote
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 --tags | Push tags to remote repository |
Submodules
Command | Description |
---|---|
git submodule status | Check status of all submodules |
- Pull submodules
git submodule sync
git submodule init
git submodule update
- Change branch
cd /submodule
git fetch origin <branch-name>
git checkout <branch-name>
cd /
The Git is a github repository by Muhammad Rehan Saeed
Leave a Reply