Skip to content

Git cheatsheets

adrianas edited this page Jul 7, 2022 · 8 revisions

Common commands

Command Description
git init Creating a local repository
git clone [repository_path] [new repository path] Copy the project from the remote repository
git clone --depth 1 [repository_path] Copy the project to get only the latest revision
git diff Display the differences of changed files
git status Display a list of changed files
git add [filename] Register files and directories to index
git add -u Register the changed files from the file that is has commited to the index
git add -A Registered for all the modified file index (file newly added is not included)
git add . Register all of the files and directories to index
git commit -m "[comment]" Commit files that have been added to the index
git commit -a Commit to add to all the changed files index (file newly added is not included)
git commit --amend Modify the last commit
git log Display the commit log
git show Display the latest commit content
git add . Register all of the files and directories to index
git push [remote] [branch] Submit to commit the local repository to the remote repository
git push origin master Submit to commit the master of the local repository to the master of the remote repository
git merge [branch] Merge the branch
git fetch [remote] Confirm the change of the remote repository

cherry-pick

Copy the commit of another branch to the current branch

$ git cherry-pick [commit id]

browse, open

Open a page of the project of GitHub

$ git browse
$ open https://github.com/USER_NAME/REPOSITORY_NAME

Open a page of the issues of the project of GitHub

$ git browse -- issues
$ open https://github.com/USER_NAME/REPOSITORY_NAME/issues

Opening the wiki pages of the project of GitHub

$ git browse -- wiki
$ open https://github.com/USER_NAME/REPOSITORY_NAME/wiki

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 branch [branch] Creating a branch
git branch -a Display list of branches
git branch -r Display the remote branch
git branch -d [branch] Delete the 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 checkout [branch] Switch the branch
git checkout -b [branch] Switching to create a branch
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
git pull-request Send a pull request
git pull-request -m "[comment]" -b defunkt:master -h mislav:feature Commit the file with the message of the pull request
git pull [remote] Incorporate a change in the remote repository

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 reset --soft HEAD^ Cancel the last commit (the contents intact)
git reset --hard HEAD^ Cancel the contents and commit of the last 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 --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

Submodules

Command Description
git submodule status Check status of all submodules
  • Pull submodules
    1. git submodule sync
    2. git submodule init
    3. git submodule update
  • Change branch
    1. cd /submodule
    2. git fetch origin <branch-name>
    3. git checkout <branch-name>
    4. cd /

Clone this wiki locally