Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
/ gitCS Public
forked from hungtuchen/gitCS

a git cheet sheet arranged by command and short discription

License

Notifications You must be signed in to change notification settings

baskets/gitCS

Open more actions menu
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
34 Commits
 
 
 
 
 
 

Repository files navigation

gitCS

a git cheet sheet arranged by command and short discription

Usage

Sometimes You know some keyword for key command but can't memorize it. This cheat sheet is I creat for this need, just use command(ctrl) + F to quickly find what you need.

// for short discription

git config

config: --local --global --system

$ git config --global user.name [name] $ git config --global user.email [email]

$ git config user.email <email>

// only for current repo

$ git config --global color.ui true

$ git config --global core.editor <editor>

$ git config --global merge.tool opendiff

$ git config (--global) --list

// list all the config

// edit config directly in ~/.gitconfig

common pattern for log

$ git config --global alias.mylog \
"log --pretty=format:'%h %s [%an]' --graph"

$ git config --global alias.lol \
"log --graph --decorate --pretty=oneline --abbrev-commit --all"

$ git config --global alias.hist \
“log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short”

$ git config --global core.autocrlf input

// auto carriage return

$ git config --global pull.rebase true

// default to $ git fetch; git rebase rather than $ git pull = git fetch; git merge

$ git config --global rerere.enabled true

// records all fixes to merge conflict, automatically fix later ones if the same

git log

$ git log

$ git log --pretty=oneline

// (SHA hash) (commit_message)

$ git log --pretty=format:”%h %ad- %s [%an]”

// %ad = author date % an = author name

// %h = SHA hash %s = subject %d = ref names

$ git log --oneline -p

// -p for patch output (detail change)

// --stat insertion and deletion

// --graph visualize the merging

$ git log --until=1.minute.ago

// --since=1.day(hour) ago

// --since=1.month.ago --until=2.weeks.ago

// --since=2015-01-01 --until= 2015-04-01

git clone

git clone <url> <new_repo_name>

git clone <repo_to_be_cloned> <new_repo_name>

git remote

$ git remote add origin <repo URL>

$ git remote -v

// show remote repositories

$ git remote add <name> <URL>

// to add new remotes

$ git remote rm <name>

// to remove remotes

$ git remote show <remote_name>

// all the branch information between <remote_name> and local

$ git remote prune <remote_name>

// Deletes all deleted branches on <remote_name> but still referenced under local(remotes/<remote_name>)

// options: --dry-run, report what branches will be pruned, but do not actually prune them.

git branch

$ git branch -d <branch_name>

// delete branch

$ git branch -D <branch_name>

// force delete branch

$ git push <remote> :<branch>

// delete remote branch

$ git branch -r

// list all remote branch

$ git branch -a

// view all of the branches, including remote

$ git branch -m <oldname> <newname>

// rename branch

$ git branch -m <newname>

// rename current branch

$ git branch <new_branch_name> <hash>

// create new branch point to

// can be replaced with reflog shortname

Recover from deleted branch

$ git reflog // and find the SHA1 for the commit at the tip of your deleted branch, then

$ git checkout [sha]

git checkout -b [branchname] // to recreate the branch from there.

git checkout

$ git checkout -- <file>…

// to discard changes in working directory // blow away all changes since last commit

$ git checkout -b <branch_name> // as if $ git branch <branch_name> were called and then checked out

$ git checkout <tag>

git reset

$ git reset HEAD <file>

// to unstage

$ git reset --soft HEAD^

// undo last commit, put changes into staging

$ git reset --hard HEAD^

// undo last commit and all changes

$ git reset --hard HEAD^^

// undo last 2 commits and all changes

$ git reset --hard <SHAhash>

$ git reset --hard HEAD@{[number]}

git reflog

// git update reflog whenever HEAD moves

// only exists locally

$ git reflog

// list all the reflogs

$ git log --walk-reflogs

// to see reflog info in log format

git tag

$ git tag

// list all tags

$ git tag -a <tag_name> -m <message>

// to add a new tag and make it annotated

$ git tag -d <tag_name>

// delete tag

$ git push origin :refs/tags/<tag_name>

// to delete a remote tag

git merge

$ git merge <branch_name>

// fast-foward condition:

// (assume on master) nothing new

// <branch_name> something new

// recursive condition:

// both branches have changed

$ git merge —no-ff <branch>

git commit

$ git commit -am <message>

// add changes from all tracked files, doesn’t add new (untracked) files

// add and commit in 1 step

$ git commit --amend -m <new_message>

// whatever has been staged is added to last commit

git fetch, rebase

// when local and remote both commit

$ git fetch; git rebase

// (if not to merge automatically)

// instead of recursive merge (local)

$ git checkout <feature> $ git rebase master

// (assumed we want merged into master), this command will add the commits of master into feature

$ git checkout master $ git merge <feature>

// then it would be fast-forward

// when rebase comes into conflict

$ git rebase --continue

// problem has resolved

$ git rebase --skip

//skip this patch

$ git rebase --abort

//check out the original branch and stop rebasing

$ git rebase -i HEAD~3

// interactive rebase after HEAD~3

git cherry-pick

$ git checkout <branch_to_put_cherry-pick>

$ git cherry-pick <SHAhash>

options: --edit // to add new commit message --no-commit <SHAhash…> // pull (multiple) commit and stages them -x : add source SHA to commit message --sign : track who did the cherry-picking

git diff

$ git diff

// show unstaged differences since last commit

$ git diff --staged

// view staged differences

$ git diff HEAD~5

// five commits ago

$ git diff HEAD^..HEAD

// second most recent commit vs. most recent

$ git diff <hash1>..<hash2>

// also (branch1)..(branch2)

// time range as in git log

git push

$ git push <remote> <branch>

$ git push -u <remote> <branch>

// link local <branch> to remote <branch> (tracking)

$ git push <remote> <local_branch>:<remote_branch>

// link up <local_branch> to <remote_branch> (useful for ex: heroku)

$ git push <remote> :<branch>

// delete remote branch

$ git push --tags

// push changes and new tags

$ git push origin :refs/tags/<tag_name>

// to delete a remote tag

$ git push --recurse-submodules=check

// abort push if haven’t pushed submodule

// can run when pushing from parent

$ git push —recurse-submodules=on-demand

// push all submodules automatically

git apply

$ git apply <patch_file>

// read the supplied patch file and applies it to files (generated from git format-patch)

// this command applies the patch but does not create a commit

git format-patch

$ git format-patch origin

// Extract all commits which are in the current branch but not in the origin branch

$ git format-patch --root origin

// Extract all commits that lead to origin since the inception of the project

$ git format-patch -3

// Extract three topmost commits from the current branch

git stash

$ git stash (save) <message>

// save modified files and restore last commit

$ git stash save --keep-index

// keep staging area not to be stashed

// other options: --include-untracked

// normally git stash only tracked files

$ git stash apply stash@{[number]}

// bring stashed files back

// by default: stash@{0}, use $ git stash list to check

$ git stash list (--stat)

// list all stashes, any argument as git log

$ git stash show stash@{[number]}

// show particular stash, by default: stash@{0}, any argument as git log

$ git stash drop stash@{[number]}

// drop stash after applied, by default: stash@{0}

$ git stash pop

// $ git stash apply; git stash drop

// need to drop manually if conflict exists

$ git stash branch <branch_name> stash@{[number]}

// checkout a new branch, apply the stash you specify and drop automatically

$ git stash show -p stash@{0} | git apply -R

// sometimes you wanna un-apply stash, thought there is no command for that

$ git config --global alias.stash-unapply '!git stash show -p | git apply -R'

// to use $ git stash-unapply

$ git stash clear

// clear all stashes

git filter-branch

$ git filter-branch --tree-filter <shell_command> -- --all

// check out each commit to run <shell_command> and recommit

ex: --tree-filter ‘rm -f password.txt’

--all // on all branches

HEAD // filter only current branch

$ git filter-branch --index-filter <shell_command>

// <shell_command> ‘must’ operate on staging area

ex: --index-filter ‘git rm --cached --ignore-unmatch password.txt’

-f // if we wanna run filter-branch again, which overwrite the backup

--prune-empty // drop commit not modifying any file

.gitignore

ex: logs/*.log

git rm

$ git rm <file>; git commit -m <message>

// stop tracking // ex: you do rm <file> then do above, it would stage the file’s removal and commit // will be gone and no longer tracked

$ git rm —cached

// keep the file on your hard drive but not have Git track it anymore

git clean

$ git clean -f

// delete untracked local files from your current branch

option: -fd: also remove directories -fX: remove only ignored files -fx: remove ignored as well as non-ignored files

$ git clean -n

// no going back for $ git clean -f, so use this to preview first

git blame

$ git blame <file> --date short

git submodule

$ git submodule add <repo_address>

// create .gitmodules and <new_module_name> (actually a directory)

TO MODIFY SUBMODULES

$ cd <new_module_name> $ git checkout master

// by default, don’t have branch

// after modifying, add, commit, push as usual but also ‘need to back to parent module and do it again’

$ git submodule init

// to init a repo containing submodules first, adding entry to .git/config

$ git submodule update

// pull down the repo and new changes

// notice: after update, it would be on no branch

Credit

Most of the content are based on what I learned from CodeSchool

git logo image

About

a git cheet sheet arranged by command and short discription

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
Morty Proxy This is a proxified and sanitized view of the page, visit original site.