Git和Git Flow速查表 Awesome Build Status ===============


Other Available Languages:

  1. Arabic Git Cheat Sheet
  2. Chinese Git Cheat Sheet
  3. Hindi Git Cheat Sheet
  4. Turkish Git Cheat Sheet
  5. Spanish Git Cheat Sheet
  6. Greek Git Cheat Sheet


自由贡献,更新语法错误. 您也可以自由添加语言文件.




Show current configuration:
$ git config --list
Show repository configuration:
$ git config --local --list
Show global configuration:
$ git config --global --list
Show system configuration:
$ git config --system --list
Set a name that is identifiable for credit when review version history:
$ git config --global“ [名姓]”
Set an email address that will be associated with each history marker:
$ git config --global“ [有效电子邮件]”
Set automatic command line coloring for Git for easy reviewing:
$ git config --global color.ui自动
Set global editor for commit
$ git config --global core.editor vi

Configuration Files

Repository specific configuration file [--local]:
User-specific configuration file [--global]:
System-wide configuration file [--system]:


Clone an existing repository:



$ git clone ssh://


$ git clone
Create a new local repository in the current directory:
$ git init
Create a new local repository in a specific directory:
$ git init <directory>

Local Changes

Changes in working directory:
$ git状态
Changes to tracked files:
$ git diff
See changes/difference of a specific file:
$ git diff <file>
Add all current changes to the next commit:
$ git添加.
Add some changes in <file> to the next commit:
$ git add -p <file>
Commit all local changes in tracked files:
$ git commit -a
Commit previously staged changes:
$ git commit
Commit with message:
$ git commit -m&#39;这里的消息&#39;
Commit skipping the staging area and adding message:
$ git commit -am&#39;消息在这里&#39;
Commit to some previous date:
 $ git commit --date =“`date --date =&#39;n day ago&#39;`” -am“ <Commit Message Here>  ”
Change last commit:


$ git commit -a-修改
Amend with last commit but use the previous commit log message


$ git commit --amend --no-edit
Change committer date of last commit:
GIT_COMMITTER_DATE =“ date” git commit --amend
Change Author date of last commit:
$ git commit --amend --date =“日期”
Move uncommitted changes from current branch to some other branch:
$ git stash
$ git checkout branch2
$ git stash pop
Restore stashed changes back to current branch:
$ git stash适用

Restore particular stash back to current branch:

- {stash_number} 可以从git stash list获取

$ git stash apply stash @ {stash_number}
Remove the last set of stashed changes:
$ git隐藏

A text search on all files in the directory:
$ git抓住“你好”
$ git grep“ Hello” v2.5

Commit History

Show all commits, starting with newest (it'll show the hash, author information, date of commit and title of the commit):
$ git日志
Show all the commits(it'll show just the commit hash and the commit message):
$ git log --oneline
Show all commits of a specific user:
$ git log --author =“用户名”
Show changes over time for a specific file:
$ git log -p <file>
Display commits that are present only in remote/branch in right side
 $ git log --oneline <origin/master>  .. <remote/master>   - 左右
Who changed, what and when in <file>:
$ git怪<file>
Show Reference log:
$ git reflog显示
Delete Reference log:

$ git reflog删除

Move / Rename

Rename a file:


$ git mv Index.txt Index.html

Branches & Tags

List all local branches:
$ git分支

List local/remote branches

$ git branch -a
List all remote branches:
$ git branch -r
Switch HEAD branch:
$ git checkout <branch>
Checkout single file from different branch
 $ git checkout <branch>  - <filename>
Create and switch new branch:
$ git checkout -b <branch>
Create a new branch from an exiting branch and switch to new branch:
$ git checkout -b <new_branch><existing_branch>

Checkout and create a new branch from existing commit

 $ git checkout <commit-hash>  -b <new_branch_name>
Create a new branch based on your current HEAD:
$ git分支<new-branch>
Create a new tracking branch based on a remote branch:
$ git branch --track <new-branch><remote-branch>
Delete a local branch:
$ git branch -d <branch>
Rename current branch to new branch name
$ git branch -m <new_branch_name>
Force delete a local branch:


$ git branch -D <branch>
Mark HEAD with a tag:
$ git标签<tag-name>
Mark HEAD with a tag and open the editor to include a message:
$ git标签-a <tag-name>
Mark HEAD with a tag that includes a message:
 $ git标签 <tag-name>  -am&#39;这里的消息&#39;
List all tags:
$ git标签
List all tags with their messages (tag message or commit message if tag has no message):
$ git标签-n

Update & Publish

List all current configured remotes:
$ git remote -v
Show information about a remote:
$ git remote show <remote>
Add new remote repository, named <remote>:
$ git remote add <remote><url>
Rename a remote repository, from <remote> to <new_remote>:
$ git远程重命名<remote><new_remote>
Remove a remote:
$ git remote rm <remote>

注意:git remote rm不会从服务器删除远程存储库. 它只是从本地存储库中删除远程及其引用.

Download all changes from <remote>, but don't integrate into HEAD:
$ git获取<remote>
Download changes and directly merge/integrate into HEAD:
$ git remote pull <remote><url>
Get all changes from HEAD to local repository:
$ git pull origin master
Get all changes from HEAD to local repository without a merge:
$ git pull --rebase <remote><branch>
Publish local changes on a remote:
$ git push remote <remote><branch>
Delete a branch on the remote:

 $ git push <remote>  : <branch>  (自Git v1.5.0起)
 $ git push <remote>   - 删除 <branch>  (自Git v1.7.0起)

Publish your tags:

$ git push-标签

Configure the merge tool globally to meld (editor)

$ git config --global merge.tool合并
Use your configured merge tool to solve conflicts:
$ git mergetool

Merge & Rebase

Merge branch into your current HEAD:
$ git的作品<branch>
Rebase your current HEAD onto <branch>:


$ git rebase <branch>
Abort a rebase:
$ git rebase --abort
Continue a rebase after resolving conflicts:
$ git overrun-继续
Use your editor to manually solve conflicts and (after resolving) mark file as resolved:
$ git添加<resolved-file>
$去rm <resolved-file>
Squashing commits:
$ git over-i <commit-just-before-first>






Discard all local changes in your working directory:
$ git reset --hard HEAD
Get all the files out of the staging area(i.e. undo the last git add):
$ git reset HEAD
Discard local changes in a specific file:
$ git checkout HEAD <file>
Revert a commit (by producing a new commit with contrary changes):
$ git还原<commit>
Reset your HEAD pointer to a previous commit and discard all changes since then:
$ git reset --hard <commit>
Reset your HEAD pointer to a remote branch current state.
 $ git reset --hard <remote/branch>  例如,上游/母版,来源/我的功能
Reset your HEAD pointer to a previous commit and preserve all changes as unstaged changes:
$ git reset <commit>
Reset your HEAD pointer to a previous commit and preserve uncommitted local changes:
$ git reset --keep <commit>
Remove files that were accidentally committed before they were added to .gitignore

$ git rm -r-缓存.
$ git添加.
$ git commit -m“删除xyz文件”


Improved Git-flow



You need a working git installation as prerequisite. Git flow works on OSX, Linux and Windows.
OSX Homebrew:
$ brew安装git-flow-avh
OSX Macports:
$ port安装git-flow
Linux (Debian-based):
$ sudo apt-get安装git-flow
Windows (Cygwin):
You need wget and util-linux to install git-flow.

 $ wget -q -O---no-check-certificate安装 <state>  |  重击

Getting Started

Git flow needs to be initialized in order to customize your project setup. Start using git-flow by initializing it inside an existing git repository:

git flow初始化

To use default

git flow初始化-d


Develop new features for upcoming releases. Typically exist in developers repos only.
Start a new feature:
This action creates a new feature branch based on 'develop' and switches to it.
git flow功能启动MYFEATURE
Finish up a feature:
Finish the development of a feature. This action performs the following:
1) Merged MYFEATURE into 'develop'.
2) Removes the feature branch.
3) Switches back to 'develop' branch
git flow功能完成MYFEATURE
Publish a feature:
Are you developing a feature in collaboration? Publish a feature to the remote server so it can be used by other users.
git flow功能发布MYFEATURE
Getting a published feature:
Get a feature published by another user.
git flow功能拉原点MYFEATURE
Tracking a origin feature:
You can track a feature on origin by using

git flow功能跟踪MYFEATURE

Make a Release

Support preparation of a new production release. Allow for minor bug fixes and preparing meta-data for a release
Start a release:
To start a release, use the git flow release command. It creates a release branch created from the 'develop' branch. You can optionally supply a [BASE] commit sha-1 hash to start the release from. The commit must be on the 'develop' branch.
git flow发布开始发布[BASE]
It's wise to publish the release branch after creating it to allow release commits by other developers. Do it similar to feature publishing with the command:
git flow发布发布
(You can track a remote release with the: git flow release track RELEASE command)
Finish up a release:
Finishing a release is one of the big steps in git branching. It performs several actions:
1) Merges the release branch back into 'master'
2) Tags the release with its name
3) Back-merges the release into 'develop'
4) Removes the release branch
git flow发布完成发布
Don't forget to push your tags with git push --tags


Hotfixes arise from the necessity to act immediately upon an undesired state of a live production version. May be branched off from the corresponding tag on the master branch that marks the production version.
Git flow hotfix start:
Like the other git flow commands, a hotfix is started with
$ git flow hotfix启动VERSION [BASENAME]
The version argument hereby marks the new hotfix release name. Optionally you can specify a basename to start from.
Finish a hotfix:
By finishing a hotfix it gets merged back into develop and master. Additionally the master merge is tagged with the hotfix version

git flow修补程序完成版本



Git flow schema