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
相關文章
相關標籤/搜索