Git Cheat Sheet 中文版

jopen 9年前發布 | 35K 次閱讀 Git 版本控制系統

創建

復制一個已創建的倉庫:

$ git clone ssh://user@domain.com/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 commit --amend

把當前分支中未提交的修改移動到其他分支

git stash
git checkout branch2
git stash pop

搜索

從當前目錄的所有文件中查找文本內容:

$ 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 blame <file>

分支與標簽

列出所有的分支:

$ git branch

切換分支:

$ git checkout <branch>

創建并切換到新分支:

$ git checkout -b <branch>

基于當前分支創建新分支:

$ git branch <new-branch>

基于遠程分支創建新的可追溯的分支:

$ git branch --track <new-branch> <remote-branch>

刪除本地分支:

$ git branch -d <branch>

給當前版本打標簽:

$ git tag <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

將本地版本發布到遠程端:

$ 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

合并與重置

將分支合并到當前HEAD中:

$ git merge <branch>

將當前HEAD版本重置到分支中:
請勿重置已發布的提交!

$ git rebase <branch>

退出重置:

$ git rebase --abort

解決沖突后繼續重置:

$ git rebase --continue

使用配置好的merge tool 解決沖突:

$ git mergetool

在編輯器中手動解決沖突后,標記文件為已解決沖突

$ git add <resolved-file>
$ git rm <resolved-file>

撤銷

放棄工作目錄下的所有修改:

$ git reset --hard HEAD

移除緩存區的所有文件(i.e. 撤銷上次git add):

$ git reset HEAD

放棄某個文件的所有本地修改:

$ git checkout HEAD <file>

重置一個提交(通過創建一個截然不同的新提交)

$ git revert <commit>

將HEAD重置到指定的版本,并拋棄該版本之后的所有修改:

$ git reset --hard <commit>

將HEAD重置到上一次提交的版本,并將之后的修改標記為未添加到緩存區的修改:

$ git reset <commit>

將HEAD重置到上一次提交的版本,并保留未提交的本地修改:

$ git reset --keep <commit>

Git-Flow

索引

  • 安裝
  • 開始
  • 特性
  • 做一個release版本
  • 緊急修復
  • Commands
  • </ul>


    安裝

    • 你需要有一個可以工作的 git 作為前提。
    • Git flow 可以工作在 OSX, Linux 和 Windows之下
    • </ul>

      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。

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

      開始

      • 為了自定義你的項目,Git flow 需要初始化過程。
      • 使用 git-flow,從初始化一個現有的 git 庫內開始。
      • 初始化,你必須回答幾個關于分支的命名約定的問題。建議使用默認值。
      • </ul>

        git flow init

        特性

        • 為即將發布的版本開發新功能特性。
        • 這通常只存在開發者的庫中。
        • </ul>

          創建一個新特性:

          下面操作創建了一個新的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版本

          • 支持一個新的用于生產環境的發布版本。
          • 允許修正小問題,并為發布版本準備元數據。
          • </ul>

            開始創建release版本:

            • 開始創建release版本,使用 git flow release 命令。
            • 'release' 分支的創建基于 'develop' 分支。
            • 你可以選擇提供一個 [BASE]參數,即提交記錄的 sha-1 hash 值,來開啟動 release 分支。
            • 這個提交記錄的 sha-1 hash 值必須是'develop' 分支下的。
            • </ul>

              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 Cheat Sheet 中文版

              來自:https://github.com/flyhigher139/Git-Cheat-Sheet/blob/master/Git%20Cheat%20Sheet-Zh.md

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!