命令分類
設置和配置 | 獲取和創建項目 | 基本快照 | 分支和合並 |
git config help |
init clone |
add status diff commit reset rm mv |
branch checkout merge mergetool log stash tag worktree |
共享和更新項目 | 檢查和比較 | 修補 | 調試 |
fetch pull push remote submodule |
show log diff shortlog describe |
apply cherry-pick diff rebase revert |
bisect blame grep |
git 命令
語法: git [--version] [--help] [-C <path>] [-c <name>=<value>] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path] [-p|--paginate|--no-pager] [--no-replace-objects] [--bare] [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>] [--super-prefix=<path>] <command> [<args>] 選項: --version # 打印git程序的版本號 --help # 打印概要和最常用命令的列表 -C <path> # 在<path>而不是當前的工作目錄中運行git -c <name>=<value> # 將配置參數傳遞給命令, 給定的值將覆蓋配置文件中的值 --exec-path[=<path>] # 安裝核心Git程序的路徑, 可以通過設置GIT_EXEC_PATH環境變量來控制, 如無路徑, git將打印當前設置並退出 --html-path # 打印Git的HTML文檔安裝並退出的路徑, 不帶斜杠 --man-path # 打印man(1)此版本Git的手冊頁的manpath, 並退出 --info-path # 打印記錄此版本Git的Info文件的安裝路徑並退出 -p, --paginate # 如果標准輸出是終端, 則將所有輸出管道更少(或如果設置為$ PAGER), 這將覆蓋pager.<cmd> 配置選項 --no-pager # 不要將Git輸出管道傳輸到尋呼機 --no-replace-objects # 不要使用替換參考來替換Git對象 --bare # 將存儲庫視為裸存儲庫, 如果未設置GIT_DIR環境, 則將其設置為當前工作目錄 --git-dir=<path> # 設置存儲庫的路徑, 可以通過設置GIT_DIR環境變量來控制, 可以是當前工作目錄的絕對或相對路徑 --work-tree=<path> # 設置工作樹的路徑, 可以通過設置GIT_WORK_TREE環境變量和core.worktree配置變量來控制, 相對於當前工作目錄的絕對或相對路徑 --namespace=<path> # 設置Git命名空間, 相當於設置GIT_NAMESPACE環境變量 --super-prefix=<path> # 目前僅供內部使用, 設置一個前綴, 該前綴從存儲庫到根的路徑, 一個用途是給調用它的超級項目的子模塊上下文 --literal-pathspecs # 字面上處理pathspecs, 相當於設置GIT_LITERAL_PATHSPECS為1 --glob-pathspecs # 添加"glob"到所有pathspec, 相當於設置GIT_GLOB_PATHSPECS為1 --noglob-pathspecs # 添加"文字"到所有pathspec, 相當於設置GIT_NOGLOB_PATHSPECS為1 --icase-pathspecs # 添加"icase"到所有pathspec, 相當於設置GIT_ICASE_PATHSPECS為1 --no-optional-locks # 不要執行需要鎖定的可選操作, 相當於設置GIT_OPTIONAL_LOCKS為0
config 命令
語法:
git config [<file-option>] [type] [--show-origin] [-z|--null] name [value [value_regex]] git config [<file-option>] [type] --add name value git config [<file-option>] [type] --replace-all name value [value_regex] git config [<file-option>] [type] [--show-origin] [-z|--null] --get name [value_regex] git config [<file-option>] [type] [--show-origin] [-z|--null] --get-all name [value_regex] git config [<file-option>] [type] [--show-origin] [-z|--null] [--name-only] --get-regexp name_regex [value_regex] git config [<file-option>] [type] [-z|--null] --get-urlmatch name URL git config [<file-option>] --unset name [value_regex] git config [<file-option>] --unset-all name [value_regex] git config [<file-option>] --rename-section old_name new_name git config [<file-option>] --remove-section name git config [<file-option>] [--show-origin] [-z|--null] [--name-only] -l | --list git config [<file-option>] --get-color name [default] git config [<file-option>] --get-colorbool name [stdout-is-tty] git config [<file-option>] -e | --edit
選項:
--system # 使用系統配置文件
--global # 使用全局配置文件
--local # 使用本地配置文件, 默認
-f <filename>, --file <filename> # 使用指定配置文件
--blob <blob-id> # 使用指定blob
--int # 確保輸出為簡單十進制數
--bool # 確保輸出為"true" 或 "false" 的布爾字符串表示
--bool-or-int # 確保輸出為--bool或--int的格式
--path # 將擴展~到指定用戶的主目錄的值 $HOME和~user主目錄。
--replace-all # 替換與該鍵匹配的所有行
--add # 添加配置項
--get # 獲取給定鍵的值(可選用與值匹配的正則表達式進行過濾)
--get-all # 像get一樣,但返回多值鍵的所有值
--get-regexp # 像get-all一樣,但將該名稱解釋為正則表達式並寫出鍵名稱
--get-urlmatch name URL # 當給定一個由兩部分組成的名稱section.key時,會返回部分<url>.key的值
--remove-section # 從配置文件中刪除給定的部分
--rename-section # 將給定部分重命名為新名稱
--unset # 從配置文件中刪除與密鑰匹配的行
--unset-all # 從配置文件中刪除所有與密鑰匹配的行
-l, --list # 列出在配置文件中設置的所有變量及其值
--expiry-date # 將確保輸出從固定或相對日期字符串轉換為時間戳, 設置該值時此選項無效
-z, --null # 對於輸出值和/或鍵的所有選項,始終使用空字符結束值, 使用換行符作為鍵和值之間的分隔符
--name-only # 輸出--listor 的配置變量的名稱--get-regexp
--show-origin # 使用原點類型(文件, 標准輸入, blob, 命令行)和實際原點(配置文件路徑, ref或blob id)擴大所有查詢配置選項的輸出
--get-colorbool name [stdout-is-tty]# 找到name(例如color.diff)的顏色設置並輸出"true"或"false"
--get-color name [default] # 查找name(例如color.diff.new)配置的顏色並將其作為ANSI顏色轉義序列輸出到標准輸出
-e, --edit # 打開一個編輯器來修改指定的配置文件; 或者 --system,--global或者存儲庫(默認)
--[no-]includes # 查找值, 默認off, on搜索所有配置文件, 當值定文件時(使用:--file,--global等)
help 命令
語法: git help [-a|--all] [-g|--guide] [-i|--info|-m|--man|-w|--web] [COMMAND|GUIDE] 選項: -a, --all # 在標准輸出上打印所有可用的命令 -g, --guide # 在標准輸出上打印有用的指南列表 -i, --info # 以信息格式顯示命令的手冊頁 -m, --man # 以man格式顯示命令的手冊頁 -w, --web # 以Web(HTML)格式顯示命令的手冊頁
init 命令
語法: git init [-q | --quiet] [--bare] [--template=<template_directory>] [--separate-git-dir <git dir>] [--shared[=<permissions>]] [directory] 選項: -q, --quiet # 僅打印錯誤和警告消息, 所有其他輸出將被抑制 --bare # 創建一個裸倉庫, 如果GIT_DIR未設置環境, 則將其設置為當前工作目錄 --template=<template_directory> # 指定將使用模板的目錄 --separate-git-dir=<git dir> # 相反, 初始化存儲庫作為目錄之一$GIT_DIR或者./.git/, 創建一個包含路徑的實際存儲庫的文本文件存在, 該文件充當文件系統不可知的Git與存儲庫的符號鏈接 --shared[=(false|true|umask|group|all|world|everybody|0xxx)] # 指定Git存儲庫在多用戶間共享, 允許同一組的用戶推入該存儲庫 umask (or false) # 使用由umask(2)報告的權限, --shared未指定時的默認值 group (or true) # 使存儲庫組可寫 all (or world or everybody) # 與組相同,但使存儲庫可供所有用戶讀取 0xxx # 0xxx是八進制數, 每個文件都有模式0xxx。
0640將創建一個組可讀的存儲庫, 但不能對其他組進行寫入或訪問。0660將創建一個對當前用戶和組可讀可寫的回購, 但其他人無法訪問。
clone 命令
語法: git clone [--template=<template_directory>] [-l] [-s] [--no-hardlinks] [-q] [-n] [--bare] [--mirror] [-o <name>] [-b <name>] [-u <upload-pack>] [--reference <repository>] [--dissociate] [--separate-git-dir <git dir>] [--depth <depth>] [--[no-]single-branch] [--no-tags] [--recurse-submodules[=<pathspec>]] [--[no-]shallow-submodules] [--jobs <n>] [--] <repository> [<directory>] 選項: -l, --local # 當克隆的存儲庫位於本地計算機上時, 此標志繞過正常的“Git aware”傳輸機制, 並通過復制HEAD以及對象和引用目錄下的所有內容來克隆存儲庫 --no-hardlinks # 強制從本地文件系統的存儲庫復制進程, 以復制目錄下的.git/objects 文件而不是使用硬鏈接 -s, --shared # 當克隆的存儲庫位於本地計算機上時, 將自動設置.git/objects/info/alternates為與源存儲庫共享對象, 而不是使用硬鏈接, 生成的存儲庫首先沒有任何對象 --reference[-if-able] <repository> # 如存儲庫位於本地計算機上, 則自動設置.git/objects/info/alternates為從存儲庫獲取對象將已存在存儲庫用作備用存儲庫將需從正在克隆的存儲庫中復制更少對象, 而降低網絡和本地存儲成本 --dissociate # 借助--reference僅使用選項指定的引用存儲庫借用對象, 以減少網絡傳輸, 並通過制作所需的借用對象的本地副本, 在克隆完成后停止借用它們 -q, --quiet # 安靜地操作, 進度未報告給標准錯誤流 -v, --verbose # 運行詳細, 不影響向標准錯誤流報告進度狀態 --progress # 當連接到終端時,默認情況下, 標准錯誤流中會報告進度狀態,除非指定-q,即使標准錯誤流未定向到終端, 此標志也會強制進度狀態 -n, --no-checkout # 克隆完成后, 不執行HEAD簽出 --bare # 制作一個純粹的 Git存儲庫 --mirror # 設置源存儲庫的鏡像 -o <name>, --origin <name> # 不要使用遠程名稱origin來跟蹤上游存儲庫,請使用<name> -b <name>, --branch <name> # 而不是將新創建的HEAD指向克隆存儲庫HEAD指向的<name>分支,而是指向分支在非裸倉庫中, 這是將被檢出的分支。 --branch也可以在生成的存儲庫中提交標簽並分離HEAD -u <upload-pack>, --upload-pack <upload-pack> # 當給定時, 通過ssh訪問要克隆的存儲庫, 這將為另一端運行的命令指定非默認路徑 --template=<template_directory> # 指定將使用模板的目錄 -c <key>=<value>, --config <key>=<value> # 在新創建的存儲庫中設置配置變量 --depth <depth> # 創建一個歷史截斷為指定數目的提交的淺表副本 --shallow-since=<date> # 在指定時間后創建一個具有歷史記錄的淺表克隆 --shallow-exclude=<revision> # 創建有歷史記錄的淺層克隆, 但不包括從指定遠程分支或標記可訪問的提交 --[no-]single-branch # 只克隆導致單個分支尖端的歷史記錄, 無論--branch選項指定還是主分支遠程的HEAD指向 --no-tags # 不要克隆任何標簽, 並remote.<remote>.tagOpt=--no-tags在配置中設置, 確保將來git pull和git fetch操作不會跟隨任何標簽 --recurse-submodules[=<pathspec] # 創建克隆后, 根據pathspec初始化和克隆子模塊。如未提供pathspec, 則初始化並克隆所有子模塊 --[no-]shallow-submodules # 所克隆的所有子模塊將會變淺, 深度為1 --separate-git-dir=<git dir> # 不要將克隆的存儲庫放置在它應該存在的位置, 而應將克隆的存儲庫放置在指定的目錄中,然后創建一個與文件系統無關的Git符號鏈接。結果是Git倉庫可以從工作樹中分離出來 -j <n>, --jobs <n> # 同時獲取的子模塊的數量。默認為submodule.fetchJobs選項 <repository> # 從中克隆的存儲庫 <directory> # 要克隆到的新目錄的名稱
add 命令
語法: git add [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i] [--patch | -p] [--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]] [--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing] [--renormalize] [--chmod=(+|-)x] [--] [<pathspec>…] 選項: -v, --verbose # 詳細 -n, --dry-run # 不要實際添加文件, 只顯示它們是否存在和/或將被忽略 -f, --force # 允許添加被忽略的文件 -i, --interactive # 在工作樹中交互添加修改的內容到索引 -p, --patch # 在索引和工作樹之間交互地選擇補丁塊, 並將它們添加到索引中 -e, --edit # 在編輯器中打開差異與索引並讓用戶編輯它。編輯器關閉后, 調整大塊頭並將補丁應用到索引 -u, --update # 更新已存在匹配<pathspec>條目的索引。這會刪除和修改索引條目以匹配工作樹, 但不會添加新文件 -A, --all, --no-ignore-removal # 更新索引不僅在工作樹具有匹配<pathspec>的文件的位置, 而且索引已經有條目的位置這會添加,修改和刪除索引條目以匹配工作樹 --no-all, --ignore-removal # 通過添加索引未知的新文件和工作樹中修改的文件來更新索引, 但忽略已從工作樹中刪除的文件當沒有使用<pathspec>時,該選項是無操作的 -N, --intent-to-add # 只記錄路徑將在稍后添加的事實。路徑條目放置在沒有內容的索引中 --refresh # 不要添加文件,而只需刷新索引中的stat()信息 --ignore-errors # 如果某些文件因索引錯誤而無法添加, 請不要中止操作,而是繼續添加其他文件 --ignore-missing # 該選項只能與--dry-run一起使用。用戶可檢查是否有給定的文件被忽略, 不管是否已存在於工作樹中 --no-warn-embedded-repo # 默認情況下, git add向嵌入式存儲庫添加索引時會發出警告, 而不用git submodule add其中創建條目.gitmodules。該選項將會禁止警告 --renormalize # 將新鮮的"干凈"過程應用於所有跟蹤的文件, 以強制將其再次添加到索引 --chmod=(+|-)x # 覆蓋添加文件的可執行位。可執行位僅在索引中更改, 磁盤上的文件保持不變。 -- # 此選項可用於將命令行選項與文件列表分開 <pathspec>… # 要從中添加內容的文件。*.c可以給Fileglobs(例如)添加所有匹配的文件
status 命令
語法: git status [<options>…] [--] [<pathspec>…] 選項: -s, --short # 以短格式輸出輸出 -b, --branch # 甚至以短格式顯示分支和跟蹤信息 --show-stash # 顯示當前隱藏的條目數量 --porcelain[=<version>] # 為腳本提供易於解析的格式輸出 --long # 以長格式輸出輸出, 默認 -v, --verbose # 除了已更改的文件名稱之外, 還會顯示正在執行的文本更改 -u[<mode>], --untracked-files[=<mode>] # 顯示未跟蹤的文件 --ignore-submodules[=<when>] # 查找更改時忽略對子模塊的更改。<when>可以是"none", "untracked", "dirty"或"all", 這是默認設置 --ignored[=<mode>] # 也顯示忽略的文件。mode參數用於指定忽略文件的處理, 可選的, 默認為傳統 traditional # 傳統, 顯示被忽略的文件和目錄, 除非指定--untracked-files = all,這種情況下將顯示忽略目錄中的單個文件 no # 否, 不顯示任何被忽略的文件 matching # 匹配, 顯示與忽略模式匹配的忽略文件和目錄 -z # 用NUL而不是LF終止輸入 --no-column, --column[=<options>] # 在列中顯示未跟蹤的文件 --ahead-behind, --no-ahead-behind # 顯示或不顯示分支相對於其上游分支的詳細前/后計數。默認為true <pathspec>… #
diff 命令
語法:
git diff [options] [<commit>] [--] [<path>…] git diff [options] --cached [<commit>] [--] [<path>…] git diff [options] <commit> <commit> [--] [<path>…] git diff [options] <blob> <blob> git diff [options] [--no-index] [--] <path> <path>
選項:
-p, -u, --patch # 生成補丁, 這是默認設置
-s, --no-patch # 抑制差異輸出。對於像git show這樣的命令很有用,默認顯示補丁,或取消效果--patch
-U<n>, --unified=<n> # 使用<n>行上下文生成差異,而不是通常的三行。意味着-p
--raw # 以原始格式生成差異
--patch-with-raw # 原始的同義詞-p --raw
--indent-heuristic, --no-indent-heuristic # 為了幫助調試和調整實驗啟發式, 改變差異邊界以使修補程序更易於閱讀, 默認關閉
--minimal # 花費額外的時間來確保生成最小可能的差異
--patience # 使用"耐心差異"算法生成差異
--histogram # 使用"直方圖差異"算法生成差異
--diff-algorithm={patience|minimal|histogram|myers} # 選擇一種差異算法
default, myers # 基本的貪婪diff算法, 默認設置
minimal # 花費額外的時間來確保生成最小可能的差異
patience # 生成補丁時使用"耐心差異"算法
histogram # 該算法將耐心算法擴展為"支持低出現率的通用元素"
--stat[=<width>[,<name-width>[,<count>]]] # 生成一個diffstat
--numstat # 類似--stat,但顯示十進制表示法中添加和刪除的行數以及不帶縮寫的路徑名。 對於二進制文件,輸出兩個-而不是說 0 0
--shortstat # 只輸出--stat包含修改文件總數的格式的最后一行, 以及添加和刪除行的數量
--dirstat[=<param1,param2,…>] # 輸出每個子目錄的相對變化量分布。--dirstat可以通過傳遞逗號分隔的參數列表來定制行為
changes # 通過計算已從源中刪除或添加到目標的行來計算dirstat數字
lines # 通過執行常規基於行的差異分析來計算dirstat數字,並將刪除/添加的行數相加
files # 通過計算更改的文件數量來計算dirstat數字
cumulative # 計數父目錄的子目錄中的更改
<limit> # 整數參數指定截斷百分比(默認為3%)。輸出中不顯示貢獻小於此百分比的目錄
--summary # 輸出擴展頭信息的精簡摘要,如創建,重命名和模式更改
--patch-with-stat # 同義詞- p - stat
-z # 當--raw,--numstat,--name-only或--name-status已給出,不Munge時間路徑名,並使用完全無效的輸出字段終止符
--name-only # 僅顯示已更改文件的名稱
--name-status # 僅顯示已更改文件的名稱和狀態
--submodule[=<format>] # 指定如何顯示子模塊中的差異
--color[=<when>] # 顯示有色差異
--no-color # 關閉有色差異
--word-diff[=<mode>] # 顯示一個單詞diff,使用<mode>分隔已更改的單詞。默認: 空格分隔
color # 僅使用顏色突出顯示更改的詞
plain # 將單詞顯示為[-removed-]和{+added+}。如果輸入中出現分隔符,則不會嘗試跳過分隔符,因此輸出可能不明確
porcelain # 使用專門用於腳本消費的基於行的格式
none # 再次禁用字差異
--word-diff-regex=<regex> # 使用<regex>來決定一個單詞是什么,而不是將非空白的運行視為一個單詞
--color-words[=<regex>] # 相當於--word-diff=color加號
--no-renames # 關閉重命名檢測,即使配置文件提供了默認設置
--check # 警告如果更改引入沖突標記或空白錯誤。認為空白錯誤由core.whitespace 配置控制。
--ws-error-highlight=<kind> # 按<顏色>指定的顏色突出顯示由<顏色>指定的行上的空白錯誤color.diff.whitespace
--full-index # 在生成補丁格式輸出時,在“索引”行上顯示完整的映像前和映像后blob對象名稱,而不是第一批字符
--binary # 除了--full-index輸出可以應用的二進制差異git-apply
--abbrev[=<n>] # 不是在diff-raw格式輸出和diff-tree標題行中顯示完整的40字節十六進制對象名稱,只顯示部分前綴
-B[<n>][/<m>], --break-rewrites[=[<n>][/<m>]] # 將完全重寫更改分解為刪除和創建對
-M[<n>], --find-renames[=<n>] # 檢測重命名
-C[<n>], --find-copies[=<n>] # 檢測副本以及重命名
--find-copies-harder # 出於性能原因,默認情況下,-C只有當副本的原始文件在相同的變更集中被修改時,選項才會查找副本
-D, --irreversible-delete # 省略原圖像進行刪除,即僅打印標題,但不打印原像和之間的差異/dev/null
-l<num> # 在-M和-C選項需要為O(n ^ 2)的處理時間,其中n是/復制目標潛在的重命名的數目如果重命名/復制目標的數量超過指定的數量,則此選項可防止重命名/復制檢測運行
--diff-filter=[(A|C|D|M|R|T|U|X|B)…[*]] # 選擇僅添加(A), 復制(C), 刪除(D), 修改(M), 重命名(R), 其類型(即常規文件, 符號鏈接, 子模塊, ...)更改(T), Unmerged(U), 未知(X)或已配對Broken(B)
可以使用任何過濾字符的組合(包括無)當*(全部或無)添加到組合中時,如果有任何文件與比較中的其他條件匹配,則選擇所有路徑; 如果沒有與其他標准匹配的文件,則不會選擇任何內容
-S<string> # 查找改變文件中指定字符串出現次數(即添加/刪除)的差異
-G<regex> # 尋找補丁文本包含與<regex>匹配的添加/刪除行的差異
--pickaxe-all # 當-S或-G發現更改時,顯示該更改集中的所有更改,而不僅僅是包含<string>中的更改的文件
--pickaxe-regex # 將給定的<string> -S視為擴展的POSIX正則表達式進行匹配
-O<orderfile> # 控制文件在輸出中出現的順序
-R # 交換兩個輸入; 即顯示索引或磁盤文件與樹內容的差異
--relative[=<path>] # 從項目的子目錄運行時,可以通過此選項告知排除目錄外的更改並顯示與其相關的路徑名
-a, --text # 將所有文件視為文本
--ignore-space-at-eol # 忽略EOL中的空白變化
-b, --ignore-space-change # 忽略空白量的變化。這會忽略行結束處的空白,並認為一個或多個空白字符的所有其他序列是等價的
-w, --ignore-all-space # 比較行時忽略空格。即使一行有空白,而另一行沒有空白,這也會忽略差異
--ignore-blank-lines # 忽略其行全部空白的更改
--inter-hunk-context=<lines> # 顯示差異hunk之間的上下文,直到指定的行數,從而融合彼此接近的hunk
-W, --function-context # 顯示整個周圍的變化功能
--exit-code # 用類似於diff(1)的代碼退出程序。也就是說,如果存在差異,則1退出,0表示沒有差異
--quiet # 禁用程序的所有輸出。意味着--exit-code
--ext-diff # 允許執行一個外部比較助手
--no-ext-diff # 禁止外部差異驅動程序
--textconv, --no-textconv # 在比較二進制文件時,允許(或不允許)運行外部文本轉換過濾器
--ignore-submodules[=<when>] # 忽略差異代中子模塊的更改。<when>可以是“none”,“untracked”,“dirty”或“all”,這是默認設置
--src-prefix=<prefix> # 顯示給定的源前綴而不是“a /”
--dst-prefix=<prefix> # 顯示給定的目的地前綴而不是“b /”
--no-prefix # 不要顯示任何來源或目的地前綴
--line-prefix=<prefix> # 為每行輸出預留一個額外的前綴
--ita-invisible-in-index # 默認情況下,由“git add -N”添加的條目顯示為“git diff”中的現有空文件和“git diff --cached”中的新文件
-1 --base, -2 --ours, -3 --theirs # 比較工作樹與“基本”版本(階段#1),“我們的分支”(階段#2)或“他們的分支”(階段#3)
-0 # 忽略差異輸出未合並的條目並只顯示“未合並”。僅在將工作樹與索引進行比較時才能使用
<path>… # 給出的<paths>參數用於將diff限制為指定的路徑
commit 命令
語法: git commit [-a | --interactive | --patch] [-s] [-v] [-u<mode>] [--amend] [--dry-run] [(-c | -C | --fixup | --squash) <commit>] [-F <file> | -m <msg>] [--reset-author] [--allow-empty] [--allow-empty-message] [--no-verify] [-e] [--author=<author>] [--date=<date>] [--cleanup=<mode>] [--[no-]status] [-i | -o] [-S[<keyid>]] [--] [<file>…] 選項: -a, --all # 告訴命令自動對已被修改和刪除的文件進行分段處理,但沒有告知Git的新文件不受影響 -p, --patch # 使用交互式補丁選擇界面來選擇要提交的更改 -C <commit>, --reuse-message=<commit> # 取一個現有的提交對象,並在創建提交時重用日志消息和作者信息(包括時間戳) -c <commit>, --reedit-message=<commit> # 像-C一樣,但-c調用了編輯器,以便用戶可以進一步編輯提交消息 --fixup=<commit> # 構建一個提交消息以供使用rebase --autosquash。提交消息將成為指定提交的主題行,其前綴為“fixup!” --squash=<commit> # 構建一個提交消息以供使用rebase --autosquash。提交消息主題行取自指定的提交,前綴為“squash!” --reset-author # 當與-C / -c / - 修改選項一起使用時,或者在沖突櫻桃挑選后提交時,聲明結果提交的作者現在屬於提交者 --short # 進行干運行時,請以短格式輸出 --branch # 甚至以短格式顯示分支和跟蹤信息 --porcelain # 進行干式運行時,請將輸出信號以瓷器准備好的格式輸出 --long # 進行干式運行時,請以長格式輸出 -z, --null # 顯示short或porcelain狀態輸出時,逐字打印文件名並用NUL而不是LF結束輸入。如果沒有給出格式,則表示--porcelain輸出格式 -F <file>, --file=<file> # 從給定的文件中獲取提交消息。使用-從標准輸入中讀取消息 --author=<author> # 覆蓋提交作者。使用標准A U Thor <author@example.com>格式指定明確的作者 --date=<date> # 覆蓋提交中使用的作者日期 -m <msg>, --message=<msg> # 使用給定的<msg>作為提交消息 -t <file>, --template=<file> # 編輯提交消息時,使用給定文件中的內容啟動編輯器 -s, --signoff # 提交日志消息結尾處的提交者添加Signed-off-by行 -n, --no-verify # 該選項繞過預先提交和提交msg鈎子 --allow-empty # 通常記錄具有與其唯一父提交完全相同的樹的提交是個錯誤,並且該命令阻止您提交此類提交 --allow-empty-message # 像--allow-empty這個命令主要供外國SCM接口腳本使用。它允許你使用空的提交消息創建一個提交,而不使用像git-commit-tree [1]命令 --cleanup=<mode> # 這個選項決定了在提交之前應該如何清理提供的提交消息。所述<模式>可以是strip, whitespace,verbatim,scissors或default strip # 刪除前導和尾隨空行,尾隨空白,評論和折疊連續的空行 whitespace # 同strip除#commentary不會被刪除 verbatim # 根本不要改變信息 scissors # 相同whitespace,除了一切從(並包括)下面找到的行被截短,如果消息是要被編輯 default # 就strip好像要編輯的消息一樣。否則whitespace -e, --edit # 從文件提取的消息-F,命令行 -m和從提交對象中取出的消息-C通常用作未修改的提交日志消息 --no-edit # 使用選定的提交消息而不啟動編輯器。例如,git commit --amend --no-edit修改提交而不更改其提交消息 --amend # 通過創建一個新的提交來替換當前分支的提示 --no-post-rewrite # 繞過重寫掛鈎 -i, --include # 在到目前為止的階段性內容提交之前,請在命令行上指定路徑的內容。這通常不是你想要的,除非你正在完成一個沖突的合並。 -o, --only # 通過獲取命令行中指定路徑的更新工作樹內容來進行提交,而忽略已為其他路徑執行的任何內容 -u[<mode>], --untracked-files[=<mode>] # 顯示未跟蹤的文件。模式可選的(默認為全部), 並用於指定未跟蹤文件的處理;
當-u未被使用時,默認是正常的,即顯示未跟蹤的文件和目錄。所述<模式>可以是no, normal,all -v, --verbose # 顯示HEAD提交與提交消息模板底部提交的內容之間的統一差異,以幫助用戶通過提醒提交具有哪些更改來描述提交 -q, --quiet # 禁止提交摘要消息 --dry-run # 不要創建提交,而是顯示要提交的路徑列表,包含將保留未提交的本地更改的路徑以及未跟蹤的路徑 --status # 使用編輯器准備提交消息時,在提交消息模板中包含git-status [1]的輸出。默認為打開,但可用於覆蓋配置變量commit.status。 --no-status # 使用編輯器准備默認提交消息時,不要在提交消息模板中包含git-status [1]的輸出。 -S[<keyid>], --gpg-sign[=<keyid>] # GPG標志提交。該keyid參數是可選的,並且默認為提交者身份 --no-gpg-sign # commit.gpgSign設置為強制每個提交進行簽名的計數器配置變量 -- # 不要將更多的參數解釋為選項 <file>… # 當在命令行上給出文件時,該命令將提交指定文件的內容,而不記錄已經執行的更改
reset 命令
語法: git reset [-q] [<tree-ish>] [--] <paths>… git reset (--patch | -p) [<tree-ish>] [--] [<paths>…] git reset [--soft | --mixed [-N] | --hard | --merge | --keep] [-q] [<commit>] 選項: -q, --quiet # 保持安靜,只報告錯誤 --soft # 根本不觸摸索引文件或工作樹(但將頭重置為<commit>,就像所有模式一樣) --mixed # 重置索引而不是工作樹(即,保存更改的文件但未標記為提交)並報告尚未更新的內容。這是默認操作 --hard # 重置索引和工作樹。放棄自<commit>以來對工作樹中跟蹤文件所做的任何更改 --merge # 重置索引並更新工作樹中<commit>和HEAD之間不同的文件,但保留索引和工作樹之間不同的文件(即沒有添加更改的文件)如果<commit>和索引之間的文件有不同的變化,則重置會中止 --keep # 重置索引條目並更新工作樹中<commit>和HEAD之間不同的文件。如果<commit>和HEAD之間的文件有本地更改,則重置會中止
rm 命令
語法: git rm [-f | --force] [-n] [-r] [--cached] [--ignore-unmatch] [--quiet] [--] <file>… 選項: <file>… # 要刪除的文件 -f, --force # 覆蓋最新的檢查 -n, --dry-run # 切勿刪除任何文件。相反,只需顯示它們是否存在於索引中,否則將被命令刪除 -r # 當給出主目錄名時允許遞歸刪除 -- # 此選項可用於將命令行選項與文件列表分開,(當文件名可能被誤認為是命令行選項時很有用) --cached # 使用此選項可以取消僅從索引中刪除路徑的情況。工作樹文件,無論是否修改,都將被單獨保留 --ignore-unmatch # 即使沒有匹配的文件,也可以用零狀態退出 -q, --quiet # 該選項禁止輸出
mv 命令
語法: git mv <options>… <args>… 選項: -f, --force # 即使目標存在,也要強制重命名或移動文件 -k # 跳過移動或重命名會導致錯誤情況的操作 -n, --dry-run # 沒做什么; 只顯示會發生什么 -v, --verbose # 報告移動文件的名稱
branch 命令
語法:
git branch [--color[=<when>] | --no-color] [-r | -a] [--list] [-v [--abbrev=<length> | --no-abbrev]] [--column[=<options>] | --no-column] [--sort=<key>] [(--merged | --no-merged) [<commit>]] [--contains [<commit]] [--no-contains [<commit>]] [--points-at <object>] [--format=<format>] [<pattern>…] git branch [--track | --no-track] [-l] [-f] <branchname> [<start-point>] git branch (--set-upstream-to=<upstream> | -u <upstream>) [<branchname>] git branch --unset-upstream [<branchname>] git branch (-m | -M) [<oldbranch>] <newbranch> git branch (-c | -C) [<oldbranch>] <newbranch> git branch (-d | -D) [-r] <branchname>… git branch --edit-description [<branchname>]
選項:
-d, --delete # 刪除分支
-D # 快捷鍵--delete --force
-l, --create-reflog # 創建分支的reflog
-f, --force # 將<branchname>重置為<startpoint>,即使<branchname>已存在
-m, --move # 移動/重命名分支和相應的reflog
-M # 快捷鍵--move --force
-c, --copy # 復制分支和相應的reflog
-C # 快捷鍵--copy --force
--color[=<when>] # 顏色分支突出顯示當前,本地和遠程跟蹤分支。該值必須始終(默認),永不,或自動
--no-color # 關閉分支顏色,即使配置文件將默認設置為顏色輸出。和...一樣--color=never
-i, --ignore-case # 排序和過濾分支不區分大小寫 --column[=<options>], --no-column # 在列中顯示分支列表
-r, --remotes # 列出或刪除(如果與-d一起使用)遠程跟蹤分支
-a, --all # 列出遠程追蹤分行和當地分行
--list # 列出分支
-v, -vv, --verbose # 在列表模式下,顯示sha1並為每個頭提交主題行,以及與上游分支(如果有)的關系
-q, --quiet # 創建或刪除分支時更安靜,抑制非錯誤消息
--abbrev=<length> # 改變輸出列表中sha1的最小顯示長度。默認值是7
--no-abbrev # 在輸出列表中顯示完整的sha1,而不是縮寫它們
-t, --track # 創建新分支時,設置branch.<name>.remote和 branch.<name>.merge配置條目以將起點分支標記為新分支的“上游”
--no-track # 即使branch.autoSetupMerge配置變量為true,也不要設置“上游”配置
--set-upstream # 由於此選項具有混淆語法,因此不再支持。請使用--track或--set-upstream-to替代
-u <upstream>, --set-upstream-to=<upstream> # 設置<branchname>的跟蹤信息,以便<upstream>被視為<branchname>的上游分支。如果未指定<branchname>,則默認為當前分支。
--unset-upstream # 刪除<branchname>的上游信息。如果未指定分支,則默認為當前分支
--edit-description # 打開一個編輯器,編輯文本解釋分支是干什么用的,通過其他各種命令使用(例如format-patch, request-pull和merge(如果啟用))
--contains [<commit>] # 只列出包含指定提交的分支(如果未指定,則為HEAD)。意味着--list
--no-contains [<commit>] # 只列出不包含指定提交的分支(如果未指定,則為HEAD)。意味着--list
--merged [<commit>] # 僅列出可從指定提交中獲得提示的分支(如果未指定,則為HEAD)。暗示--list,不符合--no-merged
--no-merged [<commit>] # 只列出提示無法從指定提交中獲得的分支(如果未指定,則為HEAD)。暗示--list,不符合--merged
<branchname> # 要創建或刪除的分支的名稱
<start-point> # 新的分支頭將指向這個提交
<oldbranch> # 要重命名的現有分支的名稱
<newbranch> # 現有分支的新名稱
--sort=<key> # 根據給定的關鍵字進行排序
--points-at <object> # 只列出給定對象的分支
--format <format> # 從顯示的分支ref 中插入的字符串以及它指向的對象。格式與git-for-each-ref [1]的格式相同
checkout 命令
語法: git checkout [-q] [-f] [-m] [<branch>] git checkout [-q] [-f] [-m] --detach [<branch>] git checkout [-q] [-f] [-m] [--detach] <commit> git checkout [-q] [-f] [-m] [[-b|-B|--orphan] <new_branch>] [<start_point>] git checkout [-f|--ours|--theirs|-m|--conflict=<style>] [<tree-ish>] [--] <paths>… git checkout [<tree-ish>] [--] <pathspec>… git checkout (-p|--patch) [<tree-ish>] [--] [<paths>…] 選項: -q, --quiet # 抑制反饋信息 --[no-]progress # 除非--quiet 已指定,否則標准錯誤流默認情況下會將其連接到終端時報告進度狀態 -f, --force # 切換分支時,即使索引或工作樹與HEAD不同,也要繼續。這用於丟棄本地更改 --ours, --theirs # 當從索引中檢出路徑時,請檢查第2階段(ours)或第3階段(theirs)是否有未合並的路徑 -b <new_branch> # 創建一個名為<new_branch>的新分支並在<start_point>處啟動它 -B <new_branch> # 創建分支<new_branch>並在<start_point>處啟動它 -t, --track # 創建新分支時,設置“上游”配置 --no-track # 即使branch.autoSetupMerge配置變量為true,也不要設置“上游”配置 -l # 創建新分支的reflog --detach # 而不是檢查一個分支來處理它,檢查提交檢查和可廢棄的實驗 --orphan <new_branch> # 創建一個名為<new_branch> 的新孤立分支,從<start_point>開始並切換到該分支 --ignore-skip-worktree-bits # 在稀疏結帳模式下,git checkout -- <paths>只會更新$GIT_DIR/info/sparse-checkout中由<路徑>和稀疏模式匹配的條目 -m, --merge # 在切換分支時,如果對當前分支與切換到的分支之間的一個或多個文件進行本地修改,則該命令將拒絕切換分支以便在上下文中保留修改 --conflict=<style> # 與上面的--merge選項相同,但改變了沖突的區塊顯示方式,覆蓋merge.conflictStyle配置變量 -p, --patch # 在<tree-ish>(或索引,如果未指定)和工作樹之間的區別中交互地選擇hunk。然后將選定的區塊反向應用於工作樹(並且如果指定了<tree-ish>,則索引) --ignore-other-worktrees # git checkout當被通緝的裁判已經被另一個工作樹簽出時拒絕。這個選項使它無論如何檢查裁判 --[no-]recurse-submodules # 使用--recurse子模塊將根據超級項目中記錄的提交更新所有已初始化的子模塊的內容 <branch> # 分支, 如果它引用了一個分支(即,前綴為“refs/heads/”的名稱是有效的ref),那么該分支將被簽出 <new_branch> # 新分支的名稱 <start_point> # 要開始新分支的提交的名稱 <tree-ish> # 要檢出的樹(當有路徑時)。如果未指定,則會使用索引
merge 命令
語法: git merge [-n] [--stat] [--no-commit] [--squash] [--[no-]edit] [-s <strategy>] [-X <strategy-option>] [-S[<keyid>]] [--[no-]allow-unrelated-histories] [--[no-]rerere-autoupdate] [-m <msg>] [<commit>…] git merge --abort git merge --continue 選項: --commit, --no-commit # 執行合並並提交結果。這個選項可以用來覆蓋--no-commit -e, --edit, --no-edit # 在提交成功的機械合並之前調用編輯器來進一步編輯自動生成的合並消息,以便用戶可以解釋並驗證合並 --ff # 當合並解析為快進時,只更新分支指針,而不創建合並提交。這是默認行為 --no-ff # 即使合並解析為快進,也可以創建合並提交。這是合並注釋標記時的默認行為 --ff-only # 拒絕合並並以非零狀態退出,除非當前HEAD已更新或合並可以解決為快進 -S[<keyid>], --gpg-sign[=<keyid>] # GPG-簽署合並提交 --log[=<n>], --no-log # 除了分支名稱之外,還可以用來自至多<n>實際提交的單行描述來填充日志消息 --signoff, --no-signoff # 提交日志消息結尾處的提交者添加Signed-off-by行 --stat, -n, --no-stat # 在合並結束時顯示diffstat。diffstat也由配置選項merge.stat控制 --squash, --no-squash # 生成工作樹和索引狀態,就像發生真正的合並一樣,但實際上並未進行提交,移動HEAD或記錄$GIT_DIR/MERGE_HEAD -s <strategy>, --strategy=<strategy> # 使用給定的合並策略; 可以多次提供,以按照他們應該嘗試的順序指定它們 -X <option>, --strategy-option=<option> # 將合並策略特定選項傳遞給合並策略 --verify-signatures, --no-verify-signatures # 驗證被合並的分支的提示提交是否使用有效密鑰進行簽名,即具有有效uid的密鑰:在默認信任模型中, 這意味着簽名密鑰已由可信密鑰簽名。如果側分支的提示提交未使用有效密鑰進行簽名,則會中止合並 --summary, --no-summary # 同義詞--stat和--no-stat; 這些已被棄用,並將在未來被刪除 -q, --quiet # 安靜地操作。意味着 - 沒有進步 -v, --verbose # 詳細 --progress, --no-progress # 明確地打開/關閉進度。如果沒有指定,如果標准錯誤連接到終端,則顯示進度 --allow-unrelated-histories # 默認情況下,git merge命令拒絕合並不共享祖先的歷史記錄 -m <msg> # 設置要用於合並提交的提交消息(以防創建) --[no-]rerere-autoupdate # 如果可能的話,允許rerere機制用自動沖突解決的結果更新索引 --abort # 中止當前的沖突解決過程,並嘗試重新構建預合並狀態 --continue # 經過git的合並,由於停止沖突,那么可以得出結論:通過運行合並混帳合並--continue <commit>… # 提交, 通常其他分支, 合並到我們的分支
mergetool 命令
語法: git mergetool [--tool=<tool>] [-y | --[no-]prompt] [<file>…] 選項: -t <tool>, --tool=<tool> # 使用<tool>指定的合並解析程序。有效值包括emerge,gvimdiff,kdiff3,meld,vimdiff和tortoisemerge。 運行git mergetool --tool-help 有效的<工具>設置列表 --tool-help # 打印可能使用的合並工具列表--tool -y, --no-prompt # 在每次調用合並解析程序之前不要提示。如果通過--tool或 merge.tool配置變量顯式指定合並解析程序(默認值) --prompt # 在每次調用合並解決方案之前提示,以使用戶有機會跳過該路徑 -O<orderfile> # 按照<orderfile>中指定的順序處理文件,每行有一個shell glob模式
log 命令
語法: git log [<options>] [<revision range>] [[\--] <path>…] 選項: --follow # 繼續列出除重命名之外的文件歷史記錄(僅適用於單個文件) --no-decorate, --decorate[=short|full|auto|no] # 打印出任何提交的ref名稱 --decorate-refs=<pattern>, --decorate-refs-exclude=<pattern> # 如果沒有--decorate-refs給出,假裝所有參考文獻都包含在內 --source # 打印在每個提交到達的命令行上給出的ref名稱 --use-mailmap # 使用郵件地圖文件將作者和提交者姓名和電子郵件地址映射到規范的實名和電子郵件地址 --full-diff # 沒有此標志,git log -p <path>...顯示提交觸摸指定的路徑,並且差異關於相同指定的路徑 --log-size # 在每個提交的輸出中包含一行“log size <number>”,其中<number>是該提交消息的長度(以字節為單位) -L <start>,<end>:<file>, -L :<funcname>:<file> # 跟蹤<file>中由“<start>,<end>”(或函數名稱regex <funcname>)給出的行范圍的演變 <revision range> # 僅顯示指定修訂范圍內的提交 [\--] <path>… # 僅顯示足以解釋如何匹配指定路徑的文件的提交 提交限制: -<number>, -n <number>, --max-count=<number> # 限制提交輸出的數量 --skip=<number> # 在開始顯示提交輸出之前跳過數字提交 --since=<date>, --after=<date> # 顯示比特定日期更近的提交 --until=<date>, --before=<date> # 顯示比特定日期更早的提交 --author=<pattern>, --committer=<pattern> # 將提交輸出限制為與指定模式(正則表達式)匹配的作者/提交者標題行 --grep-reflog=<pattern> # 將提交輸出限制為具有與指定模式(正則表達式)匹配的reflog條目的提交輸出 --grep=<pattern> # 將提交輸出限制為符合指定模式(正則表達式)的日志消息 --all-match # 將提交輸出限制為匹配所有給定的提交--grep,而不是至少匹配一個提交 --invert-grep # 將提交輸出限制為與日志消息不匹配的模式--grep=<pattern> -i, --regexp-ignore-case # 匹配正則表達式限制模式而不考慮字母大小寫 --basic-regexp # 考慮限制模式是基本的正則表達式; 這是默認值 -E, --extended-regexp # 考慮限制模式是擴展正則表達式而不是默認的基本正則表達式 -F, --fixed-strings # 考慮限制模式為固定字符串(不要將模式解釋為正則表達式) -P, --perl-regexp # 考慮限制模式是與Perl兼容的正則表達式 --remove-empty # 當給定的路徑從樹上消失時停止 --merges # 僅打印合並提交。這完全一樣--min-parents=2 --no-merges # 不要打印與多個父代的提交。這完全一樣--max-parents=1 --min-parents=<number>, --max-parents=<number> # 僅顯示至少(或至多)多次父級提交的提交 --no-min-parents, --no-max-parents # --no-min-parents並--no-max-parents重新設置這些限制(無限制) --first-parent # 在查看合並提交后,只跟蹤第一個父提交 --not # 反轉的意思^前綴(或缺乏)的所有后續修訂說明符,到下一個--not --all # 假設所有的參考文件refs/,以及HEAD命令行都列為<commit> --branches[=<pattern>] # 假設所有的參數refs/heads都在命令行上列為<commit>。如果給定<pattern>,則將分支限制為與給定shell glob匹配的分支 --tags[=<pattern>] # 假設所有的參數refs/tags都在命令行上列為<commit>。如果給出<pattern>,則將標記限制為與給定shell glob相匹配的標記 --remotes[=<pattern>] # 假設所有的參數refs/remotes都在命令行上列為<commit>。如果給出<pattern>,則將遠程跟蹤分支限制為與給定shell glob匹配的分支 --glob=<glob-pattern> # 假設所有與shell glob <glob-pattern>匹配的ref 在命令行中都以<commit>列出。前導refs /,如果缺失,將自動添加前綴 --exclude=<glob-pattern> # 不包括裁判匹配<水珠圖案>,未來--all, --branches,--tags,--remotes,或--glob原本考慮 --reflog # 假設所有reflog提到的對象都在命令行中列為<commit> --single-worktree # 默認情況下,所有工作的樹木將被下面的選項時,有一個以上--all,--reflog和 --indexed-objects。該選項強制他們僅檢查當前工作樹 --ignore-missing # 在輸入中看到一個無效的對象名稱時,假裝沒有給出錯誤的輸入 --bisect # 假裝好壞的二等分參考文獻refs/bisect/bad 被列出,並且仿佛它被跟隨,--not並且良好的平分參考refs/bisect/good-*命令行 --stdin # 除了命令行上列出的<commit>之外,還可以從標准輸入中讀取它們。如果--看到分隔符,請停止讀取提交並開始讀取路徑以限制結果 --cherry-mark # 像--cherry-pick(見下面)但標記等價提交=而不是省略它們,而不等價的提交+ --cherry-pick # 當提交集合受到對稱差異限制時,省略任何提交引入與“另一側”上的另一個提交相同的更改的提交 --left-only, --right-only # 列表僅在對稱差異的相應側提交,即只有那些將被標記<為resp的列表。>通過 --left-right --cherry # 的代名詞--right-only --cherry-mark --no-merges; 有用的是將輸出限制在我們這邊的提交中,並將那些已經應用到
分叉歷史的另一邊的標記標記為 git log --cherry upstream...mybranch類似於 git cherry upstream mybranch -g, --walk-reflogs # 而不是走提交祖先鏈,將reflog條目從最近的一條走到更舊的條目 --merge # 合並失敗后,顯示引用文件有沖突並且不存在於所有合並頭上 --boundary # 輸出排除邊界提交。邊界提交以前綴- 歷史簡化: <paths> # 提交修改給定的<路徑>被選中 --simplify-by-decoration # 由某個分支或標簽引用的提交被選中 Default mode # 將歷史簡化為解釋樹的最終狀態的最簡單歷史記錄 --full-history # 與默認模式相同,但不修剪某些歷史記錄 --dense # 只顯示選定的提交,另外一些提供有意義的歷史記錄 --sparse # 顯示簡化歷史記錄中的所有提交 --simplify-merges # 附加選項可--full-history從結果歷史記錄中刪除一些不必要的合並,因為沒有選定的提交對此合並作出貢獻 --ancestry-path # 當給定一個范圍提交的顯示(例如commit1..commit2 或commit2 ^ commit1),
只直接存在於之間的祖先鏈顯示提交commit1和 commit2,即提交屬於的兩個后代commit1,和祖先commit2 提交訂單: --date-order # 在顯示所有孩子之前不顯示父母,但在提交時間戳順序中顯示提交 --author-date-order # 在顯示所有孩子之前不顯示父母,但以作者時間戳順序顯示提交 --topo-order # 在顯示所有孩子之前不要顯示父母,並且避免在多行歷史記錄中混合顯示提交 --reverse # 以相反順序輸出選擇顯示的提交。不能與之結合 --walk-reflogs 對象遍歷: --no-walk[=(sorted|unsorted)] # 只顯示給定的提交,但不要遍歷其祖先。如果指定了范圍,則這不起作用。如果提供了參數 unsorted,
則提交按照它們在命令行上的順序顯示。否則(如sorted沒有給參數),提交按提交時間以反向時間順序顯示。不能與之結合--graph --do-walk # 覆蓋以前--no-walk 提交格式: --pretty[=<format>], --format=<format> # 漂亮地打印在提交日志的內容在給定的格式,其中<格式>可以是一個ONELINE,短,中等,充分,更全面的,電子郵件,原料,格式:<字符串> 和tformat:<字符串> --abbrev-commit # 不顯示完整的40字節十六進制提交對象名稱,只顯示部分前綴 --no-abbrev-commit # 顯示完整的40字節十六進制提交對象名稱。這種否定 --abbrev-commit和暗示它的選項如“--oneline” --oneline # 這是一起使用的“--pretty = oneline --abbrev-commit”的縮寫 --encoding=<encoding> # 提交對象在其編碼頭中記錄用於日志消息的編碼; 這個選項可以用來告訴命令在用戶首選的編碼中重新編寫提交日志消息 --expand-tabs=<n>, --expand-tabs, --no-expand-tabs # 在輸出中顯示日志消息之前,執行一個選項卡擴展(將每個選項卡用足夠的空格替換,以填充日志消息中的倍數為<n>的下一個顯示列) --notes[=<treeish>] # 在顯示提交日志消息時,顯示注釋提交的注釋 --no-notes # 不要顯示筆記 --show-signature # 通過簽名傳遞gpg --verify並顯示輸出來檢查簽名提交對象的有效性 --relative-date # 的同義詞--date=relative --date=<format> # 僅對以人可讀格式顯示的日期生效,例如在使用時--pretty。log.dateconfig變量為log命令的--date選項設置一個默認值 --parents # 也打印提交的父母(以“commit parent ...”的形式) --children # 也打印提交的子代(以“commit child ...”的形式) --left-right # 標記可以從中提交提交的對稱差異的哪一側。來自左側的提交將以前面的<和前面的提交>。如果合並--boundary,那些提交前綴為- --graph # 在輸出的左側繪制提交歷史記錄的基於文本的圖形表示 --show-linear-break[=<barrier>] # 當不使用--graph時,所有歷史分支都會變平,這使得很難看到兩個連續的提交不屬於線性分支 區分格式: -c # 使用此選項,合並提交的差異輸出會同時顯示每個父級與合並結果的差異,而不是顯示父級與每次結果之間的pairwise差異 --cc # 這個標志意味着這個-c選項,並通過省略父母內容只有兩個變體的無趣hunk來進一步壓縮補丁輸出,並且合並結果不加修改地選擇其中的一個 -m # 這個標志使得合並提交顯示了像常規提交一樣的完整差異; 對於每個合並父項,會生成一個單獨的日志條目和diff -r # 顯示遞歸差異 -t # 在diff輸出中顯示樹對象。這意味着-r
stash 命令
語法: git stash list [<options>] git stash show [<stash>] git stash drop [-q|--quiet] [<stash>] git stash ( pop | apply ) [--index] [-q|--quiet] [<stash>] git stash branch <branchname> [<stash>] git stash [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet] [-u|--include-untracked] [-a|--all] [-m|--message <message>] [--] [<pathspec>…]] git stash clear git stash create [<message>] git stash store [-m|--message <message>] [-q|--quiet] <commit> 選項: push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet] [-u|--include-untracked] [-a|--all] [-m|--message <message>] [--] [<pathspec>…] # 將您的本地修改保存到新的存儲條目中,並將它們回滾到HEAD(在工作樹和索引中) list [<options>] # 列出您當前擁有的存儲條目 show [<stash>] # 顯示存儲條目中記錄的更改,作為隱藏內容和提交首次創建存儲條目時的提交之間的差異 pop [--index] [-q|--quiet] [<stash>] # 從存儲列表中刪除一個單獨的存儲狀態並將其應用於當前工作樹狀態的頂部,即進行反操作git stash push。工作目錄必須與索引匹配 apply [--index] [-q|--quiet] [<stash>] # 喜歡pop,但不要從存儲列表中刪除狀態。不像pop, <stash>可能是任何看起來像由stash pushor 創建的提交 stash create branch <branchname> [<stash>] # 創建並檢出<branchname>從<stash>最初創建的提交開始的新分支,將記錄的更改應用<stash>到新的工作樹和索引 clear # 刪除所有的存儲條目 drop [-q|--quiet] [<stash>] # 從存儲條目列表中刪除單個存儲條目。如果沒有<stash>給出,它將刪除最新的一個 create # 創建一個存儲條目(這是一個常規的提交對象)並返回它的對象名稱,而不將它存儲在ref命名空間的任何位置 store # 在存儲引用中存儲通過git stash create(這是一個懸掛的合並提交)創建的給定存儲,更新存儲引用日志
tag 命令
語法: git tag [-a | -s | -u <keyid>] [-f] [-m <msg> | -F <file>] [-e] <tagname> [<commit> | <object>] git tag -d <tagname>… git tag [-n[<num>]] -l [--contains <commit>] [--no-contains <commit>] [--points-at <object>] [--column[=<options>] | --no-column] [--create-reflog] [--sort=<key>] [--format=<format>] [--[no-]merged [<commit>]] [<pattern>…] git tag -v [--format=<format>] <tagname>… 選項: -a, --annotate # 制作一個未簽名的帶注釋的標簽對象 -s, --sign # 使用默認的電子郵件地址密鑰創建一個GPG簽名的標簽 -u <keyid>, --local-user=<keyid> # 使用給定的密鑰創建一個GPG簽名的標簽 -f, --force # 用給定名稱替換現有標簽(而不是失敗) -d, --delete # 用給定名稱刪除現有標簽 -v, --verify # 驗證給定標簽名稱的GPG簽名 -n<num> # <num>指定在使用-l時打印多少行(如果有)。意味着--list -l, --list # 列表標簽 --sort=<key> # 根據給定的關鍵字進行排序。前綴-按值的降序進行排序 -i, --ignore-case # 排序和過濾標簽不區分大小寫 --column[=<options>], --no-column # 在列中顯示標簽列表 --contains [<commit>] # 只列出包含指定提交的標簽(如果未指定,則為HEAD)。意味着--list --no-contains [<commit>] # 只列出不包含指定提交的標簽(如果未指定,則為HEAD)。意味着--list --merged [<commit>] # 僅列出可從提交的提交(HEAD如果未指定)可訪問的列表標記,與之不兼容--no-merged --no-merged [<commit>] # 僅列出其提交無法從指定提交(HEAD如果未指定)到達的標記,與之不兼容--merged --points-at <object> # 只列出給定對象的標簽(HEAD,如果未指定)。意味着--list -m <msg>, --message=<msg> # 使用給定的標簽消息(而不是提示) -F <file>, --file=<file> # 從給定的文件中獲取標簽消息。使用-從標准輸入中讀取消息。 -e, --edit # 從帶有-F和命令行的 文件中獲取的消息-m通常用作未經修改的標記消息 --cleanup=<mode> # 該選項設置標簽消息的清理方式 --create-reflog # 為標簽創建一個reflog <tagname> # 要創建,刪除或描述的標記的名稱 <commit>, <object> # 新標簽將引用的對象,通常是提交。默認為HEAD <format> # %(fieldname)從顯示的標記ref和指向的對象中插入一個字符串
worktree 命令
語法: git worktree add [-f] [--detach] [--checkout] [--lock] [-b <new-branch>] <path> [<commit-ish>] git worktree list [--porcelain] git worktree lock [--reason <string>] <worktree> git worktree move <worktree> <new-path> git worktree prune [-n] [-v] [--expire <expire>] git worktree remove [--force] <worktree> git worktree unlock <worktree> 選項: add <path> [<commit-ish>] # 創建<path>並簽<commit-ish>出 list # 列出每個工作樹的詳細信息 lock # 如果工作樹位於便攜式設備或網絡共享上,且該共享並非始終掛載,請將其鎖定以防止其管理文件被自動修剪 move # 將工作樹移到新位置 prune # 修剪$ GIT_DIR / worktrees中的修剪樹信息 remove # 刪除一棵工作樹。只有干凈的工作樹(沒有未跟蹤的文件,並且沒有修改跟蹤的文件)可以被刪除 unlock # 解鎖一個工作樹,允許它被修剪,移動或刪除 -f, --force # 默認情況下,add拒絕創建一個新的工作樹,當它 <commit-ish>是一個分支名稱並且已經被另一個工作樹簽出並remove拒絕刪除不干凈的工作樹時 -b <new-branch>, -B <new-branch> # 用add,創建一個名為<new-branch>起始處 的新分支<commit-ish>,並檢查<new-branch>新的工作樹 --detach # 隨着add,在新的工作樹中分離HEAD --[no-]checkout # 默認情況下,add檢查出來<commit-ish>,但--no-checkout可以用來抑制,以進行自定義,如配置稀疏結帳結帳 --[no-]guess-remote # 與worktree add <path>沒有,<commit-ish>而不是創建從HEAD一個新的分支,如果存在在恰好一個遠程匹配的
基本名稱的跟蹤分支<path>,立足於遠程跟蹤分支的新分支,並標記遠程跟蹤分支為“上游”來自新的分支 --[no-]track # 創建新分支時,如果<commit-ish>是分支,則將其標記為新分支中的“上游” --lock # 創建后保持工作樹鎖定 -n, --dry-run # 隨着prune,不要刪除任何東西; 只是報告它會刪除什么 --porcelain # 使用list,輸出腳本的易於解析的格式 -v, --verbose # 隨着prune,報告所有清除 --expire <time> # 使用時prune,只會使<age>以前的未使用的工作樹過期 --reason <string> # 隨着lock,為什么工作樹被鎖定的解釋 <worktree> # 工作樹可以通過相對路徑或絕對路徑來標識
fetch 命令
語法: git fetch [<options>] [<repository> [<refspec>…]] git fetch [<options>] <group> git fetch --multiple [<options>] [(<repository> | <group>)…] git fetch --all [<options>] 選項: --all # 取回所有遙控器 -a, --append # 追加refs的ref名稱和對象名稱到現有的內容.git/FETCH_HEAD。 --depth=<depth> # 將提取限制為從每個遠程分支歷史記錄的提示中指定的提交數量 --deepen=<depth> # 與--depth相似,只是它指定了來自當前淺邊界而不是每個遠程分支歷史記錄的提示的提交數 --shallow-since=<date> # 加深或縮短淺儲存庫的歷史記錄,以便在<date>之后包含所有可訪問的提交 --shallow-exclude=<revision> # 加深或縮短淺儲存庫的歷史記錄,以排除可從指定的遠程分支或標記訪問的提交 --unshallow # 如果源存儲庫已完成,請將淺層存儲庫轉換為完整存儲庫,以消除淺存儲庫施加的所有限制 --update-shallow # 默認情況下,從淺倉庫中獲取時, git fetch拒絕需要更新.git/shallow的引用 --dry-run # 顯示將做什么,不做任何改變 -f, --force # 當git fetch與<rbranch>:<lbranch> refspec一起使用時,它拒絕更新本地分支,
<lbranch>除非<rbranch>它獲取的遠程分支是子孫的后代<lbranch> -k, --keep # 保持下載的包 --multiple # 允許指定多個<repository>和<group>參數 -p, --prune # 在提取之前,請刪除遠程不再存在的所有遠程跟蹤參考 -P, --prune-tags # 在獲取之前,刪除--prune已啟用的遠程不再存在的所有本地標記 -n, --no-tags # 默認情況下,指向從遠程存儲庫下載的對象的標簽將在本地獲取並存儲 --refmap=<refspec> # 在獲取命令行中列出的ref時,使用指定的refspec(可以多次提供)將ref映射到遠程跟蹤分支,而不是remote.*.fetch遠程存儲庫的配置變量的值 -t, --tags # 從遠程獲取所有標簽(即,將遠程標簽獲取 refs/tags/*到具有相同名稱的本地標簽中),除此之外的任何其他內容都將被提取 --recurse-submodules[=yes|on-demand|no] # 此選項控制是否以及在什么條件下也應提取填充的子模塊的新提交 -j, --jobs=<n> # 用於提取子模塊的並行子項的數量 --no-recurse-submodules # 禁用遞歸獲取子模塊(這與使用該--recurse-submodules=no選項具有相同的效果) --submodule-prefix=<path> # 在信息消息(如“獲取子模塊foo”)中打印路徑前加上<path> --recurse-submodules-default=[yes|on-demand] # 此選項在內部用於為--recurse-submodules選項臨時提供非負的默認值 -u, --update-head-ok # 默認情況下,git fetch拒絕更新與當前分支對應的頭部 --upload-pack <upload-pack> # 當給定時,並且從git fetch-pack處理要從中獲取的存儲庫,--exec=<upload-pack>將傳遞給該命令以指定在另一端運行的命令的非默認路徑 -q, --quiet # 通過 - 安靜的git-fetch-pack和沉默任何其他內部使用的git命令 -v, --verbose # 詳細 --progress # 當連接到終端時,默認情況下,標准錯誤流中會報告進度狀態,除非指定-q -4, --ipv4 # 僅使用IPv4地址,忽略IPv6地址 -6, --ipv6 # 僅使用IPv6地址,忽略IPv4地址 <repository> # 作為提取或拉取操作源的“遠程”存儲庫 <group> # 名稱指的是存儲庫列表,作為配置文件中的遠程數據<group>的值 <refspec> # 指定要獲取哪些引用以及哪些本地引用要更新
pull 命令
語法: git pull [options] [<repository> [<refspec>…]] 選項: -q, --quiet # 這被傳遞給底層的git-fetch,以便在傳輸過程中壓制報告,並在合並過程中將潛在的git-merge壓制成靜噪輸出 -v, --verbose # 通過--verbose git-fetch和git-merge --[no-]recurse-submodules[=yes|on-demand|no] # 該選項控制是否應該提取和更新所有已填充子模塊的新提交 與合並有關的選項: --commit, --no-commit # 執行合並並提交結果 -e, --edit, --no-edit # 在提交成功的機械合並之前調用編輯器來進一步編輯自動生成的合並消息,以便用戶可以解釋並驗證合並 --ff # 當合並解析為快進時,只更新分支指針,而不創建合並提交。這是默認行為 --no-ff # 即使合並解析為快進,也可以創建合並提交 --ff-only # 拒絕合並並以非零狀態退出,除非電流HEAD已經是最新的或合並可以解決為快進 --log[=<n>], --no-log # 除了分支名稱之外,還可以用來自至多<n>實際提交的單行描述來填充日志消息 --stat, -n, --no-stat # 在合並結束時顯示diffstat。diffstat也由配置選項merge.stat控制 --squash, --no-squash # 生成工作樹和索引狀態,就像發生真正的合並(合並信息除外)一樣,但實際上並未進行提交,
移動HEAD或記錄$GIT_DIR/MERGE_HEAD (以導致下一個git commit命令創建合並提交) -s <strategy>, --strategy=<strategy> # 使用給定的合並策略; 可以多次提供,以按照他們應該嘗試的順序指定它們 -X <option>, --strategy-option=<option> # 將合並策略特定選項傳遞給合並策略 --verify-signatures, --no-verify-signatures # 驗證被合並的分支的提示提交是否使用有效密鑰進行簽名,即具有有效uid的密鑰:在默認信任模型中,這意味着簽名密鑰已由可信密鑰簽名 --allow-unrelated-histories # 默認情況下,git merge命令拒絕合並不共享祖先的歷史記錄 -r, --rebase[=false|true|preserve|interactive] # 如果為true,則在獲取后重新綁定上游分支頂部的當前分支 --no-rebase # 早先覆蓋--rebase --autostash, --no-autostash # 在開始rebase之前,如果需要,將局部修改隱藏起來,並在完成時應用存儲條目 與抓取相關的選項: --all # 取回所有遙控器 -a, --append # 追加refs的ref名稱和對象名稱到現有的內容.git/FETCH_HEAD --depth=<depth> # 將提取限制為從每個遠程分支歷史記錄的提示中指定的提交數量 --deepen=<depth> # 與--depth相似,只是它指定了來自當前淺邊界而不是每個遠程分支歷史記錄的提示的提交數 --shallow-since=<date> # 加深或縮短淺儲存庫的歷史記錄,以便在<date>之后包含所有可訪問的提交 --shallow-exclude=<revision> # 加深或縮短淺儲存庫的歷史記錄,以排除可從指定的遠程分支或標記訪問的提交 --unshallow # 如果源存儲庫已完成,請將淺層存儲庫轉換為完整存儲庫,以消除淺存儲庫施加的所有限制 --update-shallow # 默認情況下,從淺倉庫中獲取時, git fetch拒絕需要更新.git/shallow的引用 -f, --force # 當git fetch與<rbranch>:<lbranch> refspec一起使用時,它拒絕更新本地分支,<lbranch>除非<rbranch>它獲取的遠程分支是子孫的后代<lbranch> -k, --keep # 保持下載的包 --no-tags # 默認情況下,指向從遠程存儲庫下載的對象的標簽將在本地獲取並存儲 -u, --update-head-ok # 默認情況下,git fetch拒絕更新與當前分支對應的頭部 --upload-pack <upload-pack> # 當給定時,並且從git fetch-pack處理要從中獲取的存儲庫,--exec=<upload-pack>將傳遞給該命令以指定在另一端運行的命令的非默認路徑 --progress # 當連接到終端時,默認情況下,標准錯誤流中會報告進度狀態,除非指定-q -4, --ipv4 # 僅使用IPv4地址,忽略IPv6地址 -6, --ipv6 # 僅使用IPv6地址,忽略IPv4地址 <repository> # 作為提取或拉取操作源的“遠程”存儲庫 <refspec> # 指定要獲取哪些引用以及哪些本地引用要更新
push 命令
語法: git push [--all | --mirror | --tags] [--follow-tags] [--atomic] [-n | --dry-run] [--receive-pack=<git-receive-pack>] [--repo=<repository>] [-f | --force] [-d | --delete] [--prune] [-v | --verbose] [-u | --set-upstream] [--push-option=<string>] [--[no-]signed|--signed=(true|false|if-asked)] [--force-with-lease[=<refname>[:<expect>]]] [--no-verify] [<repository> [<refspec>…]] 選項: <repository> # 作為推送操作目標的“遠程”存儲庫 <refspec>… # 用什么源對象指定要更新的目標引用 --all # 推送所有分支(即參考下refs/heads/); 不能與其他<refspec>一起使用 --prune # 刪除沒有本地副本的遠程分支 --mirror # 代替命名每個裁判推的,指定了下的所有參考文獻refs/(包括但不限於refs/heads/,refs/remotes/和refs/tags/)被鏡像到遠程存儲庫 -n, --dry-run # 除了實際發送更新之外,請做其他事 --porcelain # 生成機器可讀的輸出 --delete # 所有列出的ref都從遠程存儲庫中刪除 --tags # refs/tags除了在命令行中明確列出的refspecs之外,所有refs 都將被推送 --follow-tags # 推送所有沒有此選項時將被推送的引用,並且推送refs/tags遠程引用中缺少的帶注釋的標簽,但指向可從所推送的引用訪問的提交標識 --[no-]signed, --signed=(true|false|if-asked) # GPG-簽署推送請求以更新接收端的refs,以便通過鈎子檢查和/或記錄 --[no-]atomic # 如果可用,請在遠程端使用原子事務 -o <option>, --push-option=<option> # 將給定的字符串傳送給服務器,服務器將它們傳遞給預接收以及接收后掛接 --receive-pack=<git-receive-pack>, --exec=<git-receive-pack> # 遠程端上git-receive-pack程序的路徑 --[no-]force-with-lease, --force-with-lease=<refname>, --force-with-lease=<refname>:<expect> # 如果遠程ref的當前值是期望值,則此選項將覆蓋此限制 -f, --force # 通常,該命令拒絕更新遠程ref,該遠程ref不是用於覆蓋它的本地ref的祖先 --repo=<repository> # 該選項等同於<repository>參數。如果兩者都指定,則命令行參數優先 -u, --set-upstream # 對於最新或成功推送的每個分支,添加無參數git-pull [1]和其他命令使用的上游(跟蹤)引用 --[no-]thin # 這些選項被傳遞給git-send-pack [1] -q, --quiet # 抑制所有輸出,包括更新的引用列表,除非發生錯誤 -v, --verbose # 運行詳細 --progress # 當連接到終端時,默認情況下,標准錯誤流中會報告進度狀態,除非指定-q --no-recurse-submodules, --recurse-submodules=check|on-demand|only|no # 可用於所有子模塊提交的修改被推到遠程跟蹤分支上 --[no-]verify # 切換預推鈎。默認值:驗證,使鈎子有機會阻止推送 -4, --ipv4 # 僅使用IPv4地址,忽略IPv6地址 -6, --ipv6 # 僅使用IPv6地址,忽略IPv4地址
remote 命令
語法: git remote [-v | --verbose] git remote add [-t <branch>] [-m <master>] [-f] [--[no-]tags] [--mirror=<fetch|push>] <name> <url> git remote rename <old> <new> git remote remove <name> git remote set-head <name> (-a | --auto | -d | --delete | <branch>) git remote set-branches [--add] <name> <branch>… git remote get-url [--push] [--all] <name> git remote set-url [--push] <name> <newurl> [<oldurl>] git remote set-url --add [--push] <name> <newurl> git remote set-url --delete [--push] <name> <url> git remote [-v | --verbose] show [-n] <name>… git remote prune [-n | --dry-run] <name>… git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)…] 選項: -v, --verbose # 稍微詳細一點,並在名稱后顯示遠程URL add # 在<url>處添加一個名為<名稱>的存儲庫 rename # 將名為<old>的遠程重命名為<new>。遠程的所有遠程跟蹤分支和配置設置都會更新 rm, remove # 刪除名為<名稱>的遠程。遠程的所有遠程跟蹤分支和配置設置均被刪除 set-head # 設置或刪除refs/remotes/<name>/HEAD指定遠程的默認分支(即symbolic-ref的目標) set-branches # 更改已命名遠程所跟蹤分支的列表 get-url # 檢索遠程的URL set-url # 更改遠程的URL show # 給出關於遠程<名稱>的一些信息 prune # 刪除與<名稱>關聯的陳舊引用 update # 按遙控器<group>的定義,獲取存儲庫中一組指定遙控器的更新
submodule 命令
語法: git submodule [--quiet] add [<options>] [--] <repository> [<path>] git submodule [--quiet] status [--cached] [--recursive] [--] [<path>…] git submodule [--quiet] init [--] [<path>…] git submodule [--quiet] deinit [-f|--force] (--all|[--] <path>…) git submodule [--quiet] update [<options>] [--] [<path>…] git submodule [--quiet] summary [<options>] [--] [<path>…] git submodule [--quiet] foreach [--recursive] <command> git submodule [--quiet] sync [--recursive] [--] [<path>…] git submodule [--quiet] absorbgitdirs [--] [<path>…] 選項: -q, --quiet # 只打印錯誤消息 --all # 該選項僅對deinit命令有效。取消注冊工作樹中的所有子模塊 -b, --branch # 將存儲庫的分支添加為子模塊 -f, --force # 該選項僅適用於添加,刪除和更新命令。在運行add時,允許添加一個否則忽略的子模塊路徑。 --cached # 該選項僅對狀態和匯總命令有效。些命令通常使用在子模塊HEAD中找到的提交,但使用此選項時,將使用存儲在索引中的提交。 --files # 該選項僅對匯總命令有效。當使用此選項時,此命令會將索引中的提交與子模塊HEAD中的提交進行比較。 -n, --summary-limit # 該選項僅對匯總命令有效。限制摘要大小(總共顯示的提交數量) --remote # 該選項僅對更新命令有效。使用子模塊的遠程跟蹤分支的狀態,而不是使用超級項目的已記錄的SHA-1來更新子模塊 -N, --no-fetch # 該選項僅對更新命令有效。不要從遠程站點獲取新的對象。 --checkout # 該選項僅對更新命令有效。檢查子模塊中分離的HEAD上超級項目中記錄的提交。 --merge # 該選項僅對更新命令有效。將超級項目中記錄的提交合並到子模塊的當前分支中。 --rebase # 該選項僅對更新命令有效。將當前分支重新映射到超級項目中記錄的提交。 --init # 該選項僅對更新命令有效。在更新之前,初始化尚未調用“git子模塊初始化”的所有子模塊。 --name # 該選項僅對add命令有效。它將子模塊的名稱設置為給定字符串,而不是默認其路徑。 --reference <repository> # 該選項僅適用於添加和更新命令。這些命令有時需要克隆遠程存儲庫。 --recursive # 此選項僅適用於foreach,更新,狀態和同步命令。遞歸地遍歷子模塊。 --depth # 該選項對添加和更新命令有效。創建一個 歷史記錄截斷為指定修訂版數的淺表副本。 --[no-]recommend-shallow # 該選項僅對更新命令有效。默認情況下,子模塊的初始克隆將使用submodule.<name>.shallow由.gitmodules文件提供的建議 。 -j <n>, --jobs <n> # 該選項僅對更新命令有效。與多個作業並行克隆新子模塊。默認為submodule.fetchJobs選項。 <path>… # 子模塊的路徑。指定時,將限制該命令僅對在指定路徑中找到的子模塊進行操作。
show 命令
語法: git show [options] [<object>…] 選項: <object>… # 要顯示的對象的名稱(默認為HEAD) --pretty[=<format>], --format=<format> # 漂亮地打印在提交日志的內容在給定的格式 --abbrev-commit # 不顯示完整的40字節十六進制提交對象名稱,只顯示部分前綴 --no-abbrev-commit # 顯示完整的40字節十六進制提交對象名稱 --oneline # 這是一起使用的“--pretty = oneline --abbrev-commit”的縮寫 --encoding=<encoding> # 提交對象在其編碼頭中記錄用於日志消息的編碼; 這個選項可以用來告訴命令在用戶首選的編碼中重新編寫提交日志消息 --expand-tabs=<n>, --expand-tabs, --no-expand-tabs # 在輸出中顯示日志消息之前,執行一個選項卡擴展(將每個選項卡用足夠的空格替換,以填充日志消息中的倍數為<n>的下一個顯示列) --notes[=<treeish>] # 在顯示提交日志消息時,顯示注釋提交的注釋(請參閱git-notes [1]) --no-notes # 不要顯示筆記 --show-signature # 通過簽名傳遞gpg --verify並顯示輸出來檢查簽名提交對象的有效性
shortlog 命令
語法: git log --pretty=short | git shortlog [<options>] git shortlog [<options>] [<revision range>] [[\--] <path>…] 選項: -n, --numbered # 根據每個作者的提交數量而不是作者字母順序對輸出進行排序 -s, --summary # 禁止提交描述並僅提供提交計數摘要 -e, --email # 顯示每位作者的電子郵件地址 --format[=<format>] # 使用一些其他信息來描述每個提交,而不是提交主題 -c, --committer # 收集並顯示提交者身份而不是作者 -w[<width>[,<indent1>[,<indent2>]]] # 通過包裝每行的輸入線來包裝輸出width <revision range> # 僅顯示指定修訂范圍內的提交 [\--] <path>… # 只考慮足以解釋如何匹配指定路徑的文件的提交
describe 命令
語法: git describe [--all] [--tags] [--contains] [--abbrev=<n>] [<commit-ish>…] git describe [--all] [--tags] [--contains] [--abbrev=<n>] --dirty[=<mark>] git describe <blob> 選項: <commit-ish>… # 提交對象名稱來描述。如果省略,則默認為HEAD --dirty[=<mark>], --broken[=<mark>] # 描述工作樹的狀態。當工作樹與HEAD匹配時,輸出與“git describe HEAD”相同 --all # 不要只使用帶注釋的標簽,而應使用refs/名稱空間中的任何參考 --tags # 不要只使用帶注釋的標簽,而要使用refs/tags名稱空間中的任何標簽 --contains # 不是找到提交之前的標簽,而是找到提交之后的標簽,因此包含它。自動暗示 - 標簽 --abbrev=<n> # 使用默認的7位十六進制數字作為縮寫對象名稱,而不是使用<n>數字或根據需要的數字來組成一個唯一的對象名稱 --candidates=<n> # 而不是只考慮最近的10個標簽作為描述輸入提交的候選者,而是考慮到候選者 --exact-match # 只輸出完全匹配(一個標簽直接引用提供的提交)。這是--candidates = 0的同義詞。 --debug # 精確地顯示正在使用的搜索策略的信息以標准錯誤。標簽名稱仍將打印到標准輸出。 --long # 即使與標簽匹配,始終輸出長格式(標簽,提交數量和縮寫提交名稱) --match <pattern> # 只考慮與給定glob(7)模式匹配的標簽,不包括“refs/tags/”前綴 --exclude <pattern> # 不要考慮與給定glob(7)模式匹配的標簽,不包括“refs/tags/”前綴 --always # 顯示唯一縮寫的提交對象作為后備 --first-parent # 在查看合並提交后,只跟蹤第一個父提交
apply 命令
語法: git apply [--stat] [--numstat] [--summary] [--check] [--index] [--3way] [--apply] [--no-add] [--build-fake-ancestor=<file>] [-R | --reverse] [--allow-binary-replacement | --binary] [--reject] [-z] [-p<n>] [-C<n>] [--inaccurate-eof] [--recount] [--cached] [--ignore-space-change | --ignore-whitespace] [--whitespace=(nowarn|warn|fix|error|error-all)] [--exclude=<path>] [--include=<path>] [--directory=<root>] [--verbose] [--unsafe-paths] [<patch>…] 選項: <patch>… # 從中讀取補丁的文件。 -可用於從標准輸入讀取 --stat # 輸出diffstat代替輸入補丁。關閉“適用”。 --numstat # --stat與之類似,但顯示十進制表示法中添加和刪除的行數以及不帶縮寫的路徑名,以使其更加機器友好 --summary # 輸出從git diff擴展頭獲取的信息的精簡摘要,而不是應用該修補程序。關閉“適用”。 --check # 而不是應用修補程序,查看修補程序是否適用於當前工作樹和/或索引文件並檢測錯誤。關閉“適用”。 --index # 何時--check生效或應用修補程序,請確保修補程序適用於當前索引文件記錄的內容 --cached # 在不接觸工作樹的情況下應用補丁 -3, --3way # 如果修補程序不能干凈地應用,如果修補程序記錄它應該應用的斑點的標識,則回退到3路合並,
並且我們在本地可以使用這些斑點,可能會在工作樹中的文件中留下沖突標記供用戶解決 --build-fake-ancestor=<file> # 較新的git diff輸出已經 為每個blob 嵌入了索引信息,以幫助識別修補程序適用的原始版本 -R, --reverse # 反向應用補丁 --reject # 對於原子性,git默認應用會失敗整個修補程序,並且在某些不適用的情況下不會觸及工作樹 -z # 何時--numstat給出,請勿使用路徑名,但使用NUL終止的機器可讀格式 -p<n> # 從傳統差異路徑中刪除<n>引導斜杠。默認值是1。 -C<n> # 確保每次更改之前和之后至少有<n>行周圍環境匹配 --unidiff-zero # 默認情況下,git apply期望所應用的修補程序是一個至少包含一行上下文的統一差異 --apply # 如果您使用上面標記為“關閉應用 ”的任何選項 ,則git應用讀取並輸出所請求的信息,而不實際應用修補程序 --no-add # 應用修補程序時,忽略修補程序添加的內容 --allow-binary-replacement, --binary # 從歷史上看,我們不允許在未經用戶明確許可的情況下應用二進制補丁,並且此標志是實現此目的的方式 --exclude=<path-pattern> # 不要將更改應用於與給定路徑模式匹配的文件 --include=<path-pattern> # 將更改應用於與給定路徑模式匹配的文件 --ignore-space-change, --ignore-whitespace # 應用修補程序時,如果需要,請忽略上下文行中空白的更改 --whitespace=<action> # 應用修補程序時,檢測具有空白錯誤的新行或修改過的行 --inaccurate-eof # 在某些情況下,diff的某些版本不能在文件末尾正確檢測到缺失的新行 -v, --verbose # 將進展報告給stderr。默認情況下,只會打印有關當前正在應用的修補程序的消息 --recount # 不要相信大塊頭中的行數,但通過檢查補丁來推斷它們 --directory=<root> # 將<root>加入所有文件名。如果還傳遞了“-p”參數,則在應用新根之前應用該參數 --unsafe-paths # 默認情況下,影響工作區域以外的補丁被拒絕為錯誤
cherry-pick 命令
語法: git cherry-pick [--edit] [-n] [-m parent-number] [-s] [-x] [--ff] [-S[<keyid>]] <commit>… git cherry-pick --continue git cherry-pick --quit git cherry-pick --abort 選項: <commit>… # 要獲得一個更完整的拼寫方法列表 -e, --edit # 使用這個選項,git cherry-pick會讓你在提交之前編輯提交信息 -x # 在記錄提交時,附加一條線,該行表示“(cherry從提交…)”到原始的提交消息,以指示該更改是從哪個提交的 -r # 它曾經是命令默認做-x 了上面描述,並且-r是禁用它 -m parent-number, --mainline parent-number # 通常你不能選擇合並,因為你不知道合並的哪一邊應該被認為是主線 -n, --no-commit # 通常,該命令會自動創建一系列提交 -s, --signoff # 在提交消息的末尾添加Signed-off-by行 -S[<keyid>], --gpg-sign[=<keyid>] # GPG標志提交 --ff # 如果當前的HEAD與櫻桃挑選的提交的父對象相同,則將執行快速轉發此提交 --allow-empty # 默認情況下,櫻桃選擇一個空的提交將失敗,表明需要顯式調用git commit --allow-empty --allow-empty-message # 默認情況下,用空信息挑選提交將失敗 --keep-redundant-commits # 如果在當前的歷史中,如果提交的是cherry選擇了重復提交,那么它將變為空的 --strategy=<strategy> # 使用給定的合並策略。只能使用一次 -X<option>, --strategy-option=<option> # 將合並策略特定選項傳遞給合並策略 --continue # 繼續使用.git/sequencer中的信息進行操作 --quit # 忘記當前正在進行的操作 --abort # 取消操作並返回到預序列狀態
rebase 命令
語法: git rebase [-i | --interactive] [options] [--exec <cmd>] [--onto <newbase>] [<upstream> [<branch>]] git rebase [-i | --interactive] [options] [--exec <cmd>] [--onto <newbase>] --root [<branch>] git rebase --continue | --skip | --abort | --quit | --edit-todo | --show-current-patch 選項: --onto <newbase> # 創建新提交的起點 <upstream> # 上游分支進行比較。可以是任何有效的提交,而不僅僅是現有的分支名稱。默認為當前分支的配置上游 <branch> # 工作分部; 默認為HEAD --continue # 解決了合並沖突后重新啟動重新綁定過程 --abort # 中止rebase操作並將HEAD重置為原始分支 --quit # 放棄rebase操作,但HEAD不會重置回原始分支。索引和工作樹也因此保持不變 --keep-empty # 在結果中保留不改變父項的任何提交 --allow-empty-message # 默認情況下,重新綁定提交空信息將失敗 --skip # 通過跳過當前補丁重新啟動重新綁定過程 --edit-todo # 在交互式重新綁定期間編輯待辦事項列表 --show-current-patch # 在交互式底圖中顯示當前的補丁,或者由於沖突而停止底牌。這相當於 git show REBASE_HEAD -m, --merge # 使用合並策略來重新分配 -s <strategy>, --strategy=<strategy> # 使用給定的合並策略 -X <strategy-option>, --strategy-option=<strategy-option> # 將<strategy-option>傳遞給合並策略 -S[<keyid>], --gpg-sign[=<keyid>] # GPG標志提交 -q, --quiet # 安靜。意味着 - 無統計 -v, --verbose # 詳細。意味着--stat -stat # 顯示自上次rebase以來上游變化的差異。diffstat也由配置選項rebase.stat控制 -n, --no-stat # 不要將diffstat顯示為rebase過程的一部分 --no-verify # 此選項繞過預先重新綁定鈎子 --verify # 允許預重貼掛鈎運行,這是默認設置 -C<n> # 確保每次更改之前和之后至少有<n>行周圍環境匹配 -f, --force-rebase # 即使當前分支是最新的,並且--force沒有做任何事情的命令也不會返回,強制重新分配 --fork-point, --no-fork-point # 計算<branch>引入的提交時,使用reflog可以在<upstream>和<branch>之間找到更好的共同祖先 --ignore-whitespace, --whitespace=<option> # 這些標志被傳遞給應用該補丁的git apply程序。與--interactive選項不兼容 --committer-date-is-author-date, --ignore-date # 這些標志被傳遞給git am以輕松地改變重新發布的提交的日期。與--interactive選項不兼容。 --signoff # 這個標志被傳遞給git am簽署所有重新提交的提交。與--interactive選項不兼容。 -i, --interactive # 列出將要重新分配的提交列表。讓用戶在重新綁定之前編輯該列表 -p, --preserve-merges # 重新創建合並提交,而不是通過重播合並提交引入的提交來平坦化歷史 -x <cmd>, --exec <cmd> # 在每行在最終歷史記錄中創建提交后附加“exec <cmd>”。<cmd>將被解釋為一個或多個shell命令 --root # 重新規划從<branch>可訪問的所有提交,而不是用<upstream>限制它們 --autosquash, --no-autosquash # 當提交日志消息以“squash!...”(或“fixup!...”)開始時,並且在待辦事項列表中已經有一個與之相匹配的提交時...,
會自動修改rebase -i的待辦事項列表,以便被標記為壓扁的提交在提交被修改后立即出現,並將被提交的提交的操作從(或)pick改為 --autostash, --no-autostash # 在操作開始之前自動創建臨時存儲條目,並在操作結束后應用它 --no-ff # 與-interactive,cherry-pick所有基於rebased的提交,而不是快速轉發到未更改的
revert 命令
語法: git revert [--[no-]edit] [-n] [-m parent-number] [-s] [-S[<keyid>]] <commit>… git revert --continue git revert --quit git revert --abort 選項: <commit>… # 承諾恢復。有關拼寫提交名稱的更完整列表 -e, --edit # 使用這個選項,git revert可以讓你在提交恢復之前編輯提交信息 -m parent-number, --mainline parent-number # 通常您無法恢復合並,因為您不知道合並的哪一方應被視為主線 --no-edit # 使用這個選項,git revert不會啟動提交消息編輯器 -n, --no-commit # 通常,該命令會自動創建一些提交日志消息,提交哪些提交已恢復 -S[<keyid>], --gpg-sign[=<keyid>] # GPG標志提交。該keyid參數是可選的,並且默認為提交者身份; 如果指定,它必須粘貼到選項沒有空格。 -s, --signoff # 在提交消息的末尾添加Signed-off-by行 --strategy=<strategy> # 使用給定的合並策略 -X<option>, --strategy-option=<option> # 將合並策略特定選項傳遞給合並策略 --continue # 繼續使用.git/sequencer中的信息進行操作 --quit # 忘記當前正在進行的操作。可用於在失敗的cherry-pick或還原后清除排序器狀態 --abort # 取消操作並返回到預序列狀態
bisect 命令
語法: git bisect <subcommand> <options> git bisect start [--term-{old,good}=<term> --term-{new,bad}=<term>] [--no-checkout] [<bad> [<good>...]] [--] [<paths>...] git bisect (bad|new|<term-new>) [<rev>] git bisect (good|old|<term-old>) [<rev>...] git bisect terms [--term-good | --term-bad] git bisect skip [(<rev>|<range>)...] git bisect reset [<commit>] git bisect (visualize|view) git bisect replay <logfile> git bisect log git bisect run <cmd>... git bisect help 選項: --no-checkout # 在平分過程的每次迭代中,不要簽出新的工作樹
blame 命令
語法: git blame [-c] [-b] [-l] [--root] [-t] [-f] [-n] [-s] [-e] [-p] [-w] [--incremental] [-L <range>] [-S <revs-file>] [-M] [-C] [-C] [-C] [--since=<date>] [--progress] [--abbrev=<n>] [<rev> | --contents <file> | --reverse <rev>..<rev>] [--] <file> 選項: -b # 顯示邊界提交的空白SHA-1。這也可以通過blame.blankboundary配置選項來控制 --root # 不要將根提交視為邊界。這也可以通過blame.showRoot配置選項來控制 --show-stats # 在責備輸出結尾包含更多統計數據 -L <start>, <end>, -L :<funcname> # 僅注釋給定的線范圍。可以多次指定。重疊范圍是允許的 -l # 顯示長時間(默認:關閉) -t # 顯示原始時間戳(默認值:關閉) -S <revs-file> # 使用revs-file中的修訂版而不是調用git-rev-list [1] --reverse <rev>..<rev> # 前進而不是后退。它不是顯示一行出現的修訂,而是顯示一行存在的最后修訂 -p, --porcelain # 以設計用於機器消耗的格式顯示 --line-porcelain # 顯示porcelain格式,但輸出每行的提交信息,而不僅僅是第一次引用提交 --incremental # 以設計用於機器消耗的格式逐步顯示結果 --encoding=<encoding> # 指定用於輸出作者姓名和提交摘要的編碼。將其設置為none使責備輸出未轉換的數據 --contents <file> # 當未指定<rev>時,該命令注釋從工作樹副本向后開始的更改 --date <format> # 指定用於輸出日期的格式 --[no-]progress # 當連接到終端時,默認情況下標准錯誤流會報告進度狀態 -M[<num>] # 檢測文件中移動或復制的行 -C[<num>] # 除了-M檢測從同一提交中修改的其他文件移動或復制的行之外 -h # 顯示幫助信息 -c # 使用與git-annotate [1]相同的輸出模式(默認值:關閉) --score-debug # 包含與文件之間的行移動有關的調試信息和文件中移動的行 -f, --show-name # 在原始提交中顯示文件名 -n, --show-number # 在原始提交中顯示行號(默認值:關閉) -s # 從輸出中抑制作者姓名和時間戳 -e, --show-email # 顯示作者電子郵件而不是作者姓名(默認:關閉) -w # 在比較父版本和子版本時,忽略空白,並找出這些行來自哪里 --abbrev=<n> # 使用默認的7 + 1十六進制數字作為縮寫對象名稱,而不是使用<n> +1個數字
grep 命令
語法: git grep [-a | --text] [-I] [--textconv] [-i | --ignore-case] [-w | --word-regexp] [-v | --invert-match] [-h|-H] [--full-name] [-E | --extended-regexp] [-G | --basic-regexp] [-P | --perl-regexp] [-F | --fixed-strings] [-n | --line-number] [-l | --files-with-matches] [-L | --files-without-match] [(-O | --open-files-in-pager) [<pager>]] [-z | --null] [-c | --count] [--all-match] [-q | --quiet] [--max-depth <depth>] [--color[=<when>] | --no-color] [--break] [--heading] [-p | --show-function] [-A <post-context>] [-B <pre-context>] [-C <context>] [-W | --function-context] [--threads <num>] [-f <file>] [-e] <pattern> [--and|--or|--not|(|)|-e <pattern>…] [--recurse-submodules] [--parent-basename <basename>] [ [--[no-]exclude-standard] [--cached | --no-index | --untracked] | <tree>…] [--] [<pathspec>…] 選項: --cached # 在平分過程的每次迭代中,不要簽出新的工作樹 --no-index # 搜索當前目錄中不受Git管理的文件 --untracked # 除了在工作樹中跟蹤文件中搜索外,還可以在未跟蹤文件中搜索 --no-exclude-standard # 通過不尊重.gitignore 機制來搜索被忽略的文件。只用於--untracked --exclude-standard # 不要關注通過.gitignore 機制指定的忽略文件,僅在使用當前目錄搜索文件時有用--no-index --recurse-submodules # 遞歸搜索已在存儲庫中初始化並檢出的每個子模塊 -a, --text # 像處理文本一樣處理二進制文件 --textconv # 尊重textconv過濾器設置 --no-textconv # 不要兌現textconv過濾器設置。這是默認設置 -i, --ignore-case # 忽略模式和文件之間的大小寫區別 -I # 不匹配二進制文件中的模式 --max-depth <depth> # 對於命令行中給出的每個<pathspec>,最多下降<depth>級別的目錄 -w, --word-regexp # 僅在字邊界處匹配模式 -v, --invert-match # 選擇不匹配的行 -h, -H # 默認情況下,該命令顯示每個匹配的文件名 --full-name # 從子目錄運行時,該命令通常會輸出相對於當前目錄的路徑 -E, --extended-regexp, -G, --basic-regexp # 對於模式使用POSIX擴展/基本正則表達式。默認是使用基本的正則表達式 -P, --perl-regexp # 為模式使用Perl兼容的正則表達式 -F, --fixed-strings # 使用固定字符串模式 -n, --line-number # 在行號前加上匹配的行 -l, --files-with-matches, --name-only, -L, --files-without-match # 不顯示每條匹配的行,只顯示包含(或不包含)匹配的文件的名稱 -O[<pager>], --open-files-in-pager[=<pager>] # 打開尋呼機中的匹配文件(不是grep的輸出) -z, --null # 輸出\ 0而不是通常跟在文件名后的字符 -c, --count # 顯示匹配的行數,而不是顯示每條匹配的行 --color[=<when>] # 顯示彩色的比賽。該值必須始終(默認),永不,或自動 --no-color # 關閉匹配突出顯示,即使配置文件將默認設置為彩色輸出。和...一樣--color=never --break # 在不同文件的匹配之間打印空行 --heading # 在文件的上方顯示文件名,而不是在每個顯示的行的開頭 -p, --show-function # 顯示包含匹配函數名稱的上一行,除非匹配行是函數名稱本身 -<num>, -C <num>, --context <num> # 顯示<num>前導和尾部線條,並放置包含--連續的匹配組之間的線條 -A <num>, --after-context <num> # 顯示<num>尾隨線,並--在連續的匹配組之間放置一行 -B <num>, --before-context <num> # 顯示<num>引出線,並--在相鄰的匹配組之間放置一行 -W, --function-context # 顯示前一行中包含函數名稱的周圍文本,直到下一個函數名稱之前的文本,從而有效地顯示找到匹配的整個函數 --threads <num> # 要使用的grep工作線程數 -f <file> # 從<file>中讀取模式,每行一個 -e # 下一個參數是模式 --and, --or, --not, ( … ) # 指定如何使用布爾表達式組合多個模式 --all-match # 將多個模式表達式結合使用時--or,會指定此標志以將匹配限制為具有與其匹配的所有行的文件 -q, --quiet # 不輸出匹配的行 <tree>… # 而不是在工作樹中搜索跟蹤文件,搜索給定樹中的斑點 -- # 表示選項結束; 其余的參數是<pathspec>限制器 <pathspec>… # 如果給定,則將搜索限制為至少匹配一個模式的路徑
參考地址:https://git-scm.com/book/zh