Git Cheatsheet (At a glance)
Contents:
- What is Git
- Git commands to:
- Conclusion
What is Git?
Git is a free and open-source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
Git commands to Prepare Repository:
Initialise Repository
git init
Create new empty repository in current directory
Clone Repository
git clone <url> <dir>
Clone repository from the url named dir
Move to Contents
Git commands for Configuration:
Show Configurations
git config --list
Show current configurations
Set User Name
git config user.name <"name">
Set comitter username
Set User Email
git config user.email <"email">
Set commiter email address
Unix/Windows EOL Conversion
git config core.autocrlf true
Automatically convert between Unix and Windows end of the line on commit and checkout
EOL Conversion on Save Only
git config core.autocrlf input
Convert CRLF to LF only when committing, use original line ending on checkout
Change Editor
git config core.editor <editor>
Change text editor for writing commit message
Get Configuration
git config --get <config-name>
Get configuration value for the configuration name
Unset Configuration
git config --unset <config-name>
Unset configuration value for given configuration name
Configuration Scope
git config [--global | --system] <name> <value>
– local or none for current repo, –global for user scope, –system for system scope
Move to Contents
Git commands to Work With Repository
Show Status
git status
Show working directory status, what files changed
Add File to Index
git add <file>
Add file or directory to the index for the next commit
Add Modified Files
git add -u
Update modified files to the index, it will not add new files
Add All Files
git add -A
Add all file or directory to the index for the next commit
Remove File from Index
git restore --staged <file>
Remove file from index, file on current directory unaffected
Discard Modification
git checkout -- <file>
Discard file modification, restore file from index
Delete File
git rm <file>
Delete file in the working directory and the index
Commit Changes
git commit -m ["commit message"]
Apply changes in the index with given commit message
Reverse Commit
git commit --amend
Replace the last commit of the current branch with the current index
Reset Author
git commit --amend --reset-author
Amend commit author and author-date to the committer
Change Author
git commit --amend --author="Author Name <email>"
Amend commit author with given author name and email, author date unchanged
Change Author Date
git commit --amend --date="2020-11-21T23:59:59"
Amend author date, use ISO 8601 format for convenience
Show Commit Log
git log [-n <number>]
Show commit logs, limit showing <number> commits
Show Short Log
git shortlog
Show shorter commit log
Show Log Summary
git shortlog -s
Show even shorter commit count summary
Diff Working Directory and Branch
git diff <branch-name>
Show diff between a branch and working directory
Show Diff between Branches
git diff <branch-1> <branch-2>
Show diff between two branches
Move to Contents
Git commands to Manage Branch
Detach Branch
git checkout --detach
Detach HEAD from current branch
Create New Branch
git checkout -b <branch-name>
Create new branch starting from current head
Switch Branch
git checkout <branch-name>
Change active branch
Checkout to Commit-Name
git checkout <commit-name>
Checkout to commit-name. Commit name can be branch name, commit hash, or relative HEAD reference
Checkout to Previous Commit
git checkout <HEAD~1>
Detach HEAD and switch to the previous commit. Where ~1 is the previous commit, ~2 is the previous 2 commits
Reset Current Head
git reset --hard <commit-name>
Move current branch HEAD to commit-name. Changes in index AND working directory are discarded. Potentially causing commits after a commit-name loss. USE WITH CAUTION
List Branches
git branch [--list]
List local branches
List Remote Tracking Branches
git branch -r
List remote-tracking branches
List Branches and Commit Messages
git branch -v
List branches, hash, and commit message
Sort Branches by Committer Date
git branch -v --sort=commiterdate
List branches, hash, and commit message sort by committer date
Sort Branches by Author Date
git branch -v --sort=authordate
List branches, hash and commit messages, sort by author-date
List All Branches
git branch -a
List both local and remote-tracking branches
Delete Branch
git branch -d <branch-name>
Delete already merged branch
Force Delete Branch
git branch -D <branch-name>
Delete branch, even unmerged. USE WITH CAUTION
Merge Branch
git merge <other-branch>
Merge other branches with current branch, fast-forward if possible
Merge Using Merge Commit
git merge --no-ff <other-branch>
Merge other branch, use merge commit
Interactive Branch Rebase
git rebase -i <other-branch>
Rebase current branch with other branch interactively
Move to Contents
Git commands to Manage Tags
List Tags
git tag
List available tags
Add Tags
git tag <tag-name>
Create new lightweight tag named <tag-name>
Delete Tags
git tag -d <tag-name>
Delete a tag named <tag-name>
Move to Contents
Git commands to Stash Working Directory
Stash Working Directory
git stash save
Save working directory state to new stash and clean up the working directory
List Stashes
git stash list
List stashes, stash@{0} is last stash
Restore Stash
git stash pop
Restore the last stash and apply it to the working directory
Remove Last Stash
git stash drop
Remove the last stash, saved state will be discarded
Clear Stashes
git stash clear
Remove all stashes, saved state will be discarded
Move to Contents
Git commands to Remote Repository
Show Remote Repositories
git remote -v
Show remote repositories name and URL for push fetch
Add Remote Repository
git remote add <remote-name> <url>
Add new remote repository with given remote name
Push branch to remote
git push <remote-name> <branch-name>
Push local branch to remote repository
Delete Remote Branch
git push --delete <remote-name> <branch-name>
Delete a branch from remote repository
Push Tag
git push <remote-name> <tag-name>
Push single local tag to remote repository
Push All Tags
git push --tags <remote-name>
Push all local tags to remote repository
Delete Remote Tag
git push --delete <remote-name> <tag-name>
Delete a tag from remote repository
Fetch from Remote
git fetch <remote-name>
Update remote-tracking branches. Remote tracking branches are NOT automatically merged with local branches. Use git branch -r to list-remote tracking branches
Pull from Remote
git pull <remote-name> <branch-name>
Retreve objects from remote-branches, and merge with current branch. USE WITH CAUTION
Move to Contents
Git commands for Repository Maintenance
Optimize Repository
git gc
Remove unnecessary files and references, optimize repository. It is a good idea to run gc periodically
Optimize Repository if Required
git gc --auto
Check and run gc only if required, otherwise exit without doing gc
Check Repository
git fsck
Check integrity of objects in the repository
Move to Contents
Conclusion
I mentioned some of the most used git commands. To learn more about git commands, visit the official git documentation here.