天天看點

Git -2 使用技巧 快捷操作 [MD]

博文位址

我的GitHub 我的部落格 我的微信 我的郵箱
baiqiantao bqt20094 [email protected]

目錄

  • Git 使用技巧
    • git 工作流程
    • git rebase -i
    • git cherry-pick
    • 三個設定級别
    • 日志格式
      • 預置的日志格式
      • 自定義日志格式
    • author 和 committer
    • HEAD 的含義
    • 删除滿足條件的分支

Git -2 使用技巧 快捷操作 [MD]

Git 的三個區域:

  • Working Tree(workspace):目前的工作區域
  • Index/Stage:暫存區域,使用 git add xx,就可以将 xx 添加到 Stage 裡面
  • Repository:送出的曆史,即使用 git commit 送出後的結果

【s】合并多個送出:

  • 執行

    git rebase -i HEAD~影響的最少commit數

    git rebase -i 前一個commitId

  • 需要合并的那條commit

    前面的

    pick

    改為

    s

    ,儲存後退出
  • 會提示你修改 commit 日志,修改完儲存後退出
假如我們隻是合并了第 2 條和第 3 條的commit,但是第 1 條的 commitId 也變了。

【d】删除多個送出:

  • git rebase -i HEAD~影響的最少commit數

    git rebase -i 前一個commitId

  • 需要删除的那幾條commit

    pick

    d

【r】修改多個送出:

  • git rebase -i HEAD~影響的最少commit數

    git rebase -i 前一個commitId

  • 需要修改的那幾條commit

    pick

    r

  • 每個改為 reword 的 commit 都會提示你修改 commit 日志,修改儲存後退出
注意,修改後會生成新的 commitId

cherry-pick 官方文檔

cherry-pick 的翻譯是

擇優挑選

git cherry-pick <commitid> <commitid> # 挑選多個指定的 commit
git cherry-pick <start-commit>..<end-commit> # 指定範圍,(左開右閉]
git cherry-pick <start-commit>^..<end-commit> # 指定範圍,[左閉右閉]
git cherry-pick <branch name> # 挑選 branch 最頂端的送出
           

start-commit:離目前時間最早的送出,不包含

end-commit:離目前時間最近的送出,包含

如果 cherry-pick 多個 commit 時遇到沖突:

  • git cherry-pick --continue

    :繼續進行下個操作
  • git cherry-pick --quit

    :結束 cherry-pick 操作,但是不會影響沖突之前多個送出中已經成功的
  • git cherry-pick --abort

    :停止本次操作,回到 cherry-pick 前的狀态,包括多個送出中已經成功的

Git 的設定檔案有三個級别:local、global、system

  • 位于某個由Git控制的

    項目

    下隐藏的

    .git

    目錄下的

    config

    檔案,包含了具體到某個項目的配置。
  • 位于使用者目錄下的

    .gitconfig

    檔案 ,如

    C:\Users\Administrator\.gitconfig

    ,包含了具體到某個使用者配置的值。如果你傳遞參數選項

    --global

    git config

    ,它将讀寫這個檔案。
  • 位于Git安裝目錄下的

    gitconfig

    檔案,如

    C:\Program Files\Git\mingw64\etc\gitconfig

    ,包含了适用于系統所有使用者和所有庫的值。如果你傳遞參數選項

    --system

    git config

級别 影響範圍 配置檔案位置 優先級

local

本倉庫

/特定Git倉庫/.git/config

最高

global

目前使用者的所有倉庫

/Users/目前使用者/.gitconfig

system

目前系統所有使用者的所有倉庫

/Git安裝目錄/mingw64/etc/gitconfig

最低
其實還有一個

worktree

,估計是新增的,不常用,也不知道幹嘛的

按指定格式顯示日志資訊

--pretty

,可選項有:

  • --pretty=medium

    :顯示 3 行(commitId、Author、Date) + 送出說明,預設
  • --pretty=oneline

    :在一行顯示,僅顯示 commitId 和 送出說明
  • --pretty=short

    :顯示 2 行(commitId、Author) + 送出說明
  • --pretty=full

    :顯示 3 行(commitId、Author、Commit) + 送出說明
  • --pretty=fuller

    :顯示 5 行(commitId、Author、AuthorDate、Commit、CommitDate) + 送出說明
  • --pretty=email

    :沒啥用
  • --pretty=raw

  • --pretty=format:<string>

    :自定義日志格式
git log -3 --pretty=fuller
           
Git -2 使用技巧 快捷操作 [MD]

文法規則:

--pretty=format:<string>

------------------------------------------------ 内容 ------------------------------------------------

其中

<string>

部分可包含以下内容:

  • %H

    送出的完整哈希字串,

    %h

    送出對象的簡短哈希字串
  • %T

    樹對象的完整哈希字串,

    %t

    樹對象的簡短哈希字串
  • %P

    父對象的完整哈希字串,

    %p

    父對象的簡短哈希字串
  • %an

    作者(author)的名字,

    %cn

    送出者(committer)的名字
  • %ae

    作者的電子郵件位址,

    %ce

    送出者的電子郵件位址
  • %ad

    作者修訂日期,

    %cd

    送出日期;可以用

    -date=

    選項定制格式
  • %ar

    %cr

    送出日期;按多久以前的方式顯示
  • %s

    送出說明

------------------------------------------------ 顔色 ------------------------------------------------

git config --global color.ui true //啟用預設的顔色設定
git config --global color.ui false //關閉預設的顔色設定
git config --global color.diff.meta "blue black bold"
           
  • 可以針對具體的内容進行設定如:color.branch、color.diff、color.interactive、color.status
  • 顔色可用值有:normal、black、red、green、yellow、blue、magenta、cyan、white
  • 字型可選值有:bold、dim、ul、blink、reverse

------------------------------------------------ 案例 ------------------------------------------------

git log -3 --pretty=format:"%Cred%h %Cgreen[%cr] %Cred%an %Creset%s %Creset"
           

格式

%Cred%h %Cgreen[%cr] %Cred%an %Creset%s %Creset

的含義:

  • %Cred%h

    :紅色的簡短哈希字串
  • %Cgreen[%cr]

    :綠色的送出日期,按多久以前的方式顯示
  • %Cred%an

    :紅色的作者(author)的名字
  • %Creset%s

    :預設的白色的送出說明
  • %Creset

    :其他内容都使用預設的格式
Git -2 使用技巧 快捷操作 [MD]

參考

  • author

    是實際的修改者(patch 的作者),

    committer

    是實際的送出者(把 patch 應用到 repository 裡的人)
  • 很多項目限制隻有少數人可以送出 patch,但大家(patch 的作者)都可以把 patch 發送給這些人
  • committer

    隻能通過 commit 得到,通過

    git commit --reset-author

    或者

    --author="Name"

    可以修改 Author(一般不會修改)
  • 典型場景,如果你通過

    cherry-pick

    合入了别人的一個修改(沒有沖突),然後

    push

    到倉庫,此時

    author

    是别人,

    committer

    是你自己
作者是指最後一次

修改

檔案的人,而送出者是指

送出

該檔案的人

  • HEAD

    最後一次送出
  • HEAD^

    指最後一個送出的父送出(等同于

    HEAD~1

    )
  • HEAD~n

    倒數第 n 次送出

git branch | grep 'dev' | xargs git branch -d //删除分支名包含 dev 的分支
           

指令解釋:

  • git branch

    :用于列出本地所有分支
  • |

    :管道指令,用于将一串指令串聯起來,前面指令的

    輸出

    可以作為後面指令的

    輸入

  • grep

    :搜尋過濾指令,使用正規表達式搜尋文本,并把比對的行列印出來
  • xargs

    :參數傳遞指令,用于将标準輸入作為指令的

    參數

    傳給下一個指令

2019-7-14

本文來自部落格園,作者:白乾濤,轉載請注明原文連結:https://www.cnblogs.com/baiqiantao/p/11111287.html