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 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 checkout [branch] Switch the branch
git checkout -b [branch] Switching to create a branch
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

Commit to add to all the changed files index (file newly added is not included)

$ git commit -a

Modify the last commit

$ git commit --amend

log, show

Display the commit log

$ git log

Display the latest commit content

$ git show

reset

Cancel the last commit (the contents intact)

$ git reset --soft HEAD^

Cancel the contents and commit of the last commit

$ git reset --hard HEAD^

push

Submit to commit the local repository to the remote repository

$ git push [remote] [branch]

Submit to commit the master of the local repository to the master of the remote repository

$ git push origin master

pull-request

Send a pull request

$ git pull-request

Commit the file with the message of the pull request

$ git pull-request -m "[comment]" -b defunkt:master -h mislav:feature

merge

Merge the branch

$ git merge [branch]

fetch, pull

Confirm the change of the remote repository

git fetch [remote]

Incorporate a change in the remote repository

$ git pull [remote]

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 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 --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