Git Cheat Sheet 中文版

本文内容来自我fork 并翻译的GitHub repo Git-Cheat-Sheet,若是内容有误或有新内容补充,欢迎你们给我发issuejavascript

Other Available Languages:

  1. Arabic Git Cheat Sheet
  2. English Git Cheat Sheet
  3. Hindi Git Cheat Sheet
  4. Turkish Git Cheat Sheet
  5. Spanish Git Cheat Sheet

Git cheat sheet 让你不用再去记全部的git命令。java

欢迎贡献内容、修正语法错误,也欢迎添加你母语版本的Git cheat sheet。linux


索引


配置

列出当前配置:
$ git config --list复制代码
列出repository配置:
$ git config --local --list复制代码
列出全局配置:
$ git config --global --list复制代码
列出系统配置:
$ git config --system --list复制代码
设置用户名:
$ git config --global user.name “[firstname lastname]”复制代码
设置用户邮箱:
$ git config --global user.email “[valid-email]”复制代码
设置git命令输出为彩色:
$ git config --global color.ui auto复制代码
设置git使用的文本编辑器设:
$ git config --global core.editor vi复制代码

配置文件

Repository配置对应的配置文件路径[--local]:
<repo>/.git/config复制代码
用户全局配置对应的配置文件路径[--global]:
~/.gitconfig复制代码
系统配置对应的配置文件路径[--local]:
/etc/gitconfig复制代码

建立

复制一个已建立的仓库:
# 经过 SSH
$ git clone ssh://user@domain.com/repo.git

#经过 HTTP
$ git clone http://domain.com/user/repo.git复制代码
建立一个新的本地仓库:
$ git init复制代码

本地修改

显示工做路径下已修改的文件:
$ git status复制代码
显示与上次提交版本文件的不一样:
$ git diff复制代码
把当前全部修改添加到下次提交中:
$ git add .复制代码
把对某个文件的修改添加到下次提交中:
$ git add -p <file>复制代码
提交本地的全部修改:
$ git commit -a复制代码
提交以前已标记的变化:
$ git commit复制代码
附加消息提交:
$ git commit -m 'message here'复制代码
提交,并将提交时间设置为以前的某个日期:
git commit --date="`date --date='n day ago'`" -am "Commit Message"复制代码
修改上次提交

请勿修改已发布的提交记录!git

$ git commit --amend复制代码
修改上次提交的committer date:
GIT_COMMITTER_DATE="date" git commit --amend复制代码
修改上次提交的author date:
git commit --amend --date="date"复制代码
把当前分支中未提交的修改移动到其余分支:
git stash
git checkout branch2
git stash pop复制代码
将 stashed changes 应用到当前分支:
git stash apply复制代码
删除最新一次的 stashed changes:
git stash drop复制代码

搜索

从当前目录的全部文件中查找文本内容:
$ git grep "Hello"复制代码
在某一版本中搜索文本:
$ git grep "Hello" v2.5复制代码

提交历史

从最新提交开始,显示全部的提交记录(显示hash, 做者信息,提交的标题和时间):
$ git log复制代码
显示全部提交(仅显示提交的hash和message):
$ git log --oneline复制代码
显示某个用户的全部提交:
$ git log --author="username"复制代码
显示某个文件的全部修改:
$ git log -p <file>复制代码
仅显示远端 分支与远端 分支提交记录的差集:
$ git log --oneline <origin/master>..<remote/master> --left-right复制代码
谁,在什么时间,修改了文件的什么内容:
$ git blame <file>复制代码
显示reflog:
$ git reflog show复制代码
删除reflog:
$ git reflog delete复制代码

分支与标签

列出全部的分支:
$ git branch复制代码
列出全部的远端分支:
$ git branch -r复制代码
切换分支:
$ git checkout <branch>复制代码
建立并切换到新分支:
$ git checkout -b <branch>复制代码
基于当前分支建立新分支:
$ git branch <new-branch>复制代码
基于远程分支建立新的可追溯的分支:
$ git branch --track <new-branch> <remote-branch>复制代码
删除本地分支:
$ git branch -d <branch>复制代码
强制删除一个本地分支:

将会丢失未合并的修改!github

$ git branch -D <branch>复制代码
给当前版本打标签:
$ git tag <tag-name>复制代码
给当前版本打标签并附加消息:
$ git tag -a <tag-name>复制代码

更新与发布

列出当前配置的远程端:
$ git remote -v复制代码
显示远程端的信息:
$ git remote show <remote>复制代码
添加新的远程端:
$ git remote add <remote> <url>复制代码
下载远程端版本,但不合并到HEAD中:
$ git fetch <remote>复制代码
下载远程端版本,并自动与HEAD版本合并:
$ git remote pull <remote> <url>复制代码
将远程端版本合并到本地版本中:
$ git pull origin master复制代码
以rebase方式将远端分支与本地合并:
git pull --rebase <remote> <branch>复制代码
将本地版本发布到远程端:
$ git push remote <remote> <branch>复制代码
删除远程端分支:
$ git push <remote> :<branch> (since Git v1.5.0)
# or
git push <remote> --delete <branch> (since Git v1.7.0)复制代码
发布标签:
$ git push --tags复制代码

合并与重置(Rebase)

将分支合并到当前HEAD中:
$ git merge <branch>复制代码
将当前HEAD版本重置到分支中:

请勿重置已发布的提交!windows

$ git rebase <branch>复制代码
退出重置:
$ git rebase --abort复制代码
解决冲突后继续重置:
$ git rebase --continue复制代码
使用配置好的merge tool 解决冲突:
$ git mergetool复制代码
在编辑器中手动解决冲突后,标记文件为已解决冲突
$ git add <resolved-file>


$ git rm <resolved-file>复制代码
合并提交:
$ git rebase -i <commit-just-before-first>复制代码

把上面的内容替换为下面的内容:缓存

原内容:bash

pick <commit_id>
pick <commit_id2>
pick <commit_id3>复制代码

替换为:服务器

pick <commit_id>
squash <commit_id2>
squash <commit_id3>复制代码

撤销

放弃工做目录下的全部修改:
$ git reset --hard HEAD复制代码
移除缓存区的全部文件(i.e. 撤销上次git add):
$ git reset HEAD复制代码
放弃某个文件的全部本地修改:
$ git checkout HEAD <file>复制代码
重置一个提交(经过建立一个大相径庭的新提交)
$ git revert <commit>复制代码
将HEAD重置到指定的版本,并抛弃该版本以后的全部修改:
$ git reset --hard <commit>复制代码
用远端分支强制覆盖本地分支:
git reset --hard <remote/branch> e.g., upstream/master, origin/my-feature复制代码
将HEAD重置到上一次提交的版本,并将以后的修改标记为未添加到缓存区的修改:
$ git reset <commit>复制代码
将HEAD重置到上一次提交的版本,并保留未提交的本地修改:
$ git reset --keep <commit>复制代码
删除添加.gitignore文件前错误提交的文件:
$ git rm -r --cached .
$ git add .
$ git commit -m "remove xyz file"复制代码

Git-Flow

索引


安装

  • 你须要有一个能够工做的 git 做为前提。
  • Git flow 能够工做在 OSX, Linux 和 Windows之下
OSX Homebrew:
$ brew install git-flow复制代码
OSX Macports:
$ port install git-flow复制代码
Linux:
$ apt-get install git-flow复制代码
Windows (Cygwin):

安装 git-flow, 你须要 wget 和 util-linux。app

$ wget -q -O - --no-check-certificate https://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | bash复制代码

开始

  • 为了自定义你的项目,Git flow 须要初始化过程。
  • 使用 git-flow,从初始化一个现有的 git 库内开始。
  • 初始化,你必须回答几个关于分支的命名约定的问题。建议使用默认值。
git flow init复制代码

特性

  • 为即将发布的版本开发新功能特性。
  • 这一般只存在开发者的库中。
建立一个新特性:

下面操做建立了一个新的feature分支,并切换到该分支

git flow feature start MYFEATURE复制代码
完成新特性的开发:

完成开发新特性。这个动做执行下面的操做:

  1. 合并 MYFEATURE 分支到 'develop'
  2. 删除这个新特性分支
  3. 切换回 'develop' 分支
git flow feature finish MYFEATURE复制代码
发布新特性:

你是否合做开发一项新特性?
发布新特性分支到远程服务器,因此,其它用户也可使用这分支。

git flow feature publish MYFEATURE复制代码
取得一个发布的新特性分支:

取得其它用户发布的新特性分支。

git flow feature pull origin MYFEATURE复制代码
追溯远端上的特性:

经过下面命令追溯远端上的特性

git flow feature track MYFEATURE复制代码

作一个release版本

  • 支持一个新的用于生产环境的发布版本。
  • 容许修正小问题,并为发布版本准备元数据。
开始建立release版本:
  • 开始建立release版本,使用 git flow release 命令。
  • 'release' 分支的建立基于 'develop' 分支。
  • 你能够选择提供一个 [BASE]参数,即提交记录的 sha-1 hash 值,来开启动 release 分支。
  • 这个提交记录的 sha-1 hash 值必须是'develop' 分支下的。
git flow release start RELEASE [BASE]复制代码

建立 release 分支以后当即发布容许其它用户向这个 release 分支提交内容是个明智的作法。命令十分相似发布新特性:

git flow release publish RELEASE复制代码

(你能够经过
git flow release track RELEASE 命令追溯远端的 release 版本)

完成 release 版本:

完成 release 版本是一个大 git 分支操做。它执行下面几个动做:

  1. 归并 release 分支到 'master' 分支。
  2. 用 release 分支名打 Tag
  3. 归并 release 分支到 'develop'
  4. 移除 release 分支。
git flow release finish RELEASE复制代码

不要忘记使用git push --tags将tags推送到远端


紧急修复

紧急修复来自这样的需求:生产环境的版本处于一个不预期状态,须要当即修正。有多是须要修正 master 分支上某个 TAG 标记的生产版本。

开始 git flow 紧急修复:

像其它 git flow 命令同样, 紧急修复分支开始自:

$ git flow hotfix start VERSION [BASENAME]复制代码

VERSION 参数标记着修正版本。你能够从 [BASENAME]开始,[BASENAME]`为finish release时填写的版本号

完成紧急修复:

当完成紧急修复分支,代码归并回 develop 和 master 分支。相应地,master 分支打上修正版本的 TAG。

git flow hotfix finish VERSION复制代码

Commands

git-flow-commands


Git flow schema

Git flow schema
相关文章
相关标签/搜索