簡體中文 ▾ 主題 ▾ 最新版本 ▾ githooks 上次更新於 2.46.1

名稱

githooks - Git 使用的鉤子

概要

$GIT_DIR/hooks/* (或 `git config core.hooksPath`/*)

描述

鉤子是您可以放置在 `hooks` 目錄中的程式,用於在 Git 執行的特定點觸發操作。未設定可執行位的鉤子將被忽略。

預設情況下,鉤子目錄是 $GIT_DIR/hooks,但可以透過 core.hooksPath 配置變數進行更改(參見 git-config[1])。

在 Git 呼叫鉤子之前,它會將工作目錄更改為裸倉庫中的 $GIT_DIR,或非裸倉庫中工作樹的根目錄。推送期間觸發的鉤子(pre-receiveupdatepost-receivepost-updatepush-to-checkout)是例外,它們始終在 $GIT_DIR 中執行。

環境變數,例如 GIT_DIRGIT_WORK_TREE 等,會被匯出,以便鉤子執行的 Git 命令能夠正確找到倉庫。如果您的鉤子需要在外部倉庫或同一倉庫的不同工作樹中呼叫 Git 命令,那麼它應該清除這些環境變數,以免它們干擾外部位置的 Git 操作。例如

local_desc=$(git describe)
foreign_desc=$(unset $(git rev-parse --local-env-vars); git -C ../foreign-repo describe)

鉤子可以透過環境變數、命令列引數和標準輸入獲取其引數。有關詳細資訊,請參閱下面每個鉤子的文件。

git init 可能會根據其配置將鉤子複製到新倉庫。有關詳細資訊,請參見 git-init[1] 中“模板目錄”部分。本文件其餘部分提及“預設鉤子”時,指的是 Git 隨附的預設模板。

當前支援的鉤子如下所述。

鉤子

applypatch-msg

此鉤子由 git-am[1] 呼叫。它接受一個引數,即包含建議的提交日誌訊息的檔名。以非零狀態退出會導致 git am 在應用補丁之前中止。

鉤子允許就地編輯訊息檔案,可用於將訊息規範化為某些專案標準格式。它還可以在檢查訊息檔案後拒絕提交。

預設的 applypatch-msg 鉤子,在啟用時,如果 commit-msg 鉤子也啟用,則會執行它。

pre-applypatch

此鉤子由 git-am[1] 呼叫。它不接受引數,在補丁應用後但在提交之前呼叫。

如果它以非零狀態退出,則在應用補丁後工作樹將不會被提交。

它可用於檢查當前工作樹,並在未透過某些測試時拒絕提交。

預設的 pre-applypatch 鉤子,在啟用時,如果 pre-commit 鉤子也啟用,則會執行它。

post-applypatch

此鉤子由 git-am[1] 呼叫。它不接受引數,在補丁應用和提交完成後呼叫。

此鉤子主要用於通知,不能影響 git am 的結果。

pre-commit

此鉤子由 git-commit[1] 呼叫,可以透過 --no-verify 選項繞過。它不接受引數,並在獲取建議的提交日誌訊息和進行提交之前呼叫。從此指令碼以非零狀態退出會導致 git commit 命令在建立提交之前中止。

預設的 pre-commit 鉤子,在啟用時,會捕獲引入帶有尾隨空格的行,並在找到此類行時中止提交。

如果命令不會彈出編輯器來修改提交訊息,則所有 git commit 鉤子都會在環境變數 GIT_EDITOR=: 的情況下被呼叫。

預設的 pre-commit 鉤子,在啟用時——並且當 hooks.allownonascii 配置選項未設定或設定為 false 時——會阻止使用非 ASCII 檔名。

pre-merge-commit

此鉤子由 git-merge[1] 呼叫,可以透過 --no-verify 選項繞過。它不接受引數,並在合併成功執行後、獲取建議的提交日誌訊息以進行提交之前呼叫。從此指令碼以非零狀態退出會導致 git merge 命令在建立提交之前中止。

預設的 pre-merge-commit 鉤子,在啟用時,如果 pre-commit 鉤子也啟用,則會執行它。

如果命令不會彈出編輯器來修改提交訊息,則此鉤子會在環境變數 GIT_EDITOR=: 的情況下被呼叫。

如果無法自動執行合併,則需要解決衝突並單獨提交結果(參見 git-merge[1])。此時,此鉤子將不會執行,但如果 pre-commit 鉤子已啟用,則會執行。

prepare-commit-msg

此鉤子由 git-commit[1] 呼叫,在準備好預設日誌訊息後、編輯器啟動前。

它接受一到三個引數。第一個是包含提交日誌訊息的檔名。第二個是提交訊息的來源,可以是:message(如果給定了 -m-F 選項);template(如果給定了 -t 選項或設定了配置選項 commit.template);merge(如果提交是合併或存在 .git/MERGE_MSG 檔案);squash(如果存在 .git/SQUASH_MSG 檔案);或者 commit,後跟一個提交物件名稱(如果給定了 -c-C--amend 選項)。

如果退出狀態為非零,git commit 將中止。

此鉤子的目的是就地編輯訊息檔案,並且不會被 --no-verify 選項抑制。非零退出意味著鉤子失敗並中止提交。它不應作為 pre-commit 鉤子的替代品。

Git 附帶的示例 prepare-commit-msg 鉤子會刪除提交模板註釋部分中的幫助訊息。

commit-msg

此鉤子由 git-commit[1]git-merge[1] 呼叫,可以透過 --no-verify 選項繞過。它接受一個引數,即包含建議的提交日誌訊息的檔名。以非零狀態退出會導致命令中止。

鉤子允許就地編輯訊息檔案,可用於將訊息規範化為某些專案標準格式。它還可以在檢查訊息檔案後拒絕提交。

預設的 commit-msg 鉤子,在啟用時,會檢測重複的 Signed-off-by 尾部資訊,如果發現則中止提交。

post-commit

此鉤子由 git-commit[1] 呼叫。它不接受引數,並在提交完成後呼叫。

此鉤子主要用於通知,不能影響 git commit 的結果。

pre-rebase

此鉤子由 git-rebase[1] 呼叫,可用於阻止分支被變基。此鉤子可能帶有一個或兩個引數。第一個引數是系列所分叉的上游。第二個引數是被變基的分支,在變基當前分支時未設定。

post-checkout

在更新工作樹後執行 git-checkout[1]git-switch[1] 時,會呼叫此鉤子。該鉤子會收到三個引數:前一個 HEAD 的引用、新 HEAD 的引用(可能已更改,也可能未更改),以及一個指示檢出是分支檢出(更改分支,flag=1)還是檔案檢出(從索引檢索檔案,flag=0)的標誌。除了鉤子的退出狀態會成為這兩個命令的退出狀態外,此鉤子不能影響 git switchgit checkout 的結果。

除非使用 --no-checkout (-n) 選項,否則它也會在 git-clone[1] 之後執行。傳遞給鉤子的第一個引數是 null-ref,第二個是新 HEAD 的引用,標誌始終為 1。對於 git worktree add 也是如此,除非使用 --no-checkout

此鉤子可用於執行倉庫有效性檢查、如果與前一個 HEAD 不同則自動顯示差異,或設定工作目錄元資料屬性。

post-merge

此鉤子由 git-merge[1] 呼叫,這發生在對本地倉庫執行 git pull 時。此鉤子接受一個引數,一個狀態標誌,指定正在執行的合併是否是 squash 合併。此鉤子不能影響 git merge 的結果,並且如果合併因衝突而失敗則不會執行。

此鉤子可以與相應的 pre-commit 鉤子結合使用,以儲存和恢復與工作樹相關的任何形式的元資料(例如:許可權/所有權、ACL 等)。有關如何執行此操作的示例,請參見 contrib/hooks/setgitperms.perl。

pre-push

此鉤子由 git-push[1] 呼叫,可用於阻止推送發生。此鉤子帶有兩個引數,提供目標遠端倉庫的名稱和位置;如果未使用命名遠端倉庫,則這兩個值將相同。

關於要推送什麼的資訊透過標準輸入提供給鉤子,格式如下:

<local-ref> SP <local-object-name> SP <remote-ref> SP <remote-object-name> LF

例如,如果執行命令 git push origin master:foreign,鉤子將收到如下一行:

refs/heads/master 67890 refs/heads/foreign 12345

儘管將提供完整的物件名稱。如果遠端引用尚不存在,<remote-object-name> 將是全零物件名稱。如果要刪除引用,<local-ref> 將作為 (delete) 提供,並且 <local-object-name> 將是全零物件名稱。如果本地提交是由除可展開名稱(例如 HEAD~ 或物件名稱)之外的其他內容指定的,它將按原始給定方式提供。

如果此鉤子以非零狀態退出,git push 將中止,不推送任何內容。可以透過寫入標準錯誤將推送被拒絕的原因資訊傳送給使用者。

pre-receive

此鉤子由 git-receive-pack[1] 呼叫,當它響應 git push 並更新其倉庫中的引用時。在開始更新遠端倉庫上的引用之前,會呼叫 pre-receive 鉤子。其退出狀態決定了更新的成功或失敗。

此鉤子在接收操作中執行一次。它不接受引數,但對於每個要更新的引用,它會透過標準輸入接收一行,格式如下:

<old-oid> SP <new-oid> SP <ref-name> LF

其中 <old-oid> 是引用中儲存的舊物件名稱,<new-oid> 是要儲存在引用中的新物件名稱,<ref-name> 是引用的完整名稱。建立新引用時,<old-oid> 是全零物件名稱。

如果鉤子以非零狀態退出,則不會更新任何引用。如果鉤子以零狀態退出,則單個引用的更新仍可由 update 鉤子阻止。

標準輸出和標準錯誤輸出都會轉發到另一端的 git send-pack,因此您可以簡單地 echo 訊息給使用者。

git push --push-option=... 命令列上給定的推送選項數量可以從環境變數 GIT_PUSH_OPTION_COUNT 中讀取,選項本身則在 GIT_PUSH_OPTION_0GIT_PUSH_OPTION_1 等變數中找到。如果協商後不使用推送選項階段,則不會設定環境變數。如果客戶端選擇使用推送選項但未傳輸任何選項,則計數變數將設定為零,即 GIT_PUSH_OPTION_COUNT=0

有關一些注意事項,請參見 git-receive-pack[1] 中“隔離環境”部分。

update

此鉤子由 git-receive-pack[1] 呼叫,當它響應 git push 並更新其倉庫中的引用時。在更新遠端倉庫上的引用之前,會呼叫 update 鉤子。其退出狀態決定了引用更新的成功或失敗。

此鉤子為每個要更新的引用執行一次,並接受三個引數:

  • 正在更新的引用的名稱,

  • 引用中儲存的舊物件名稱,

  • 以及要儲存在引用中的新物件名稱。

update 鉤子以零退出允許引用被更新。以非零狀態退出會阻止 git receive-pack 更新該引用。

此鉤子可用於透過確保物件名稱是舊物件名稱所命名的提交物件的後代,來防止對某些引用進行強制更新。也就是說,強制執行“僅快進”策略。

它還可以用於記錄舊..新狀態。但是,它不知道分支的完整集合,因此如果簡單使用,最終會為每個引用傳送一封電子郵件。 post-receive 鉤子更適合此用途。

在一個僅透過網路限制使用者訪問 Git 命令的環境中,此鉤子可用於實現訪問控制,而無需依賴檔案系統所有權和組成員資格。有關如何使用登入 shell 將使用者訪問許可權限制為僅 Git 命令,請參見 git-shell[1]

標準輸出和標準錯誤輸出都會轉發到另一端的 git send-pack,因此您可以簡單地 echo 訊息給使用者。

預設的 update 鉤子,在啟用時——並且當 hooks.allowunannotated 配置選項未設定或設定為 false 時——會阻止未加註釋的標籤被推送。

proc-receive

此鉤子由 git-receive-pack[1] 呼叫。如果伺服器設定了多值配置變數 receive.procReceiveRefs,並且傳送到 receive-pack 的命令具有匹配的引用名稱,則這些命令將由此鉤子執行,而不是由內部的 execute_commands() 函式執行。此鉤子負責更新相關引用並將結果報告回 receive-pack

此鉤子在接收操作中執行一次。它不接受引數,但使用 pkt-line 格式協議與 receive-pack 通訊,以讀取命令、推送選項併發送結果。在下面的協議示例中,字母 S 代表 receive-pack,字母 H 代表此鉤子。

# Version and features negotiation.
S: PKT-LINE(version=1\0push-options atomic...)
S: flush-pkt
H: PKT-LINE(version=1\0push-options...)
H: flush-pkt
# Send commands from server to the hook.
S: PKT-LINE(<old-oid> <new-oid> <ref>)
S: ... ...
S: flush-pkt
# Send push-options only if the 'push-options' feature is enabled.
S: PKT-LINE(push-option)
S: ... ...
S: flush-pkt
# Receive results from the hook.
# OK, run this command successfully.
H: PKT-LINE(ok <ref>)
# NO, I reject it.
H: PKT-LINE(ng <ref> <reason>)
# Fall through, let 'receive-pack' execute it.
H: PKT-LINE(ok <ref>)
H: PKT-LINE(option fall-through)
# OK, but has an alternate reference.  The alternate reference name
# and other status can be given in option directives.
H: PKT-LINE(ok <ref>)
H: PKT-LINE(option refname <refname>)
H: PKT-LINE(option old-oid <old-oid>)
H: PKT-LINE(option new-oid <new-oid>)
H: PKT-LINE(option forced-update)
H: ... ...
H: flush-pkt

proc-receive 鉤子的每個命令都可以指向一個偽引用,並且其舊物件 ID 始終為零,而 proc-receive 鉤子可以更新一個備用引用,並且該備用引用可能已經存在且具有非零的舊物件 ID。對於這種情況,此鉤子將使用“option”指令來報告由開頭的“ok”指令給出的引用的擴充套件屬性。

此鉤子命令的報告應與輸入具有相同的順序。proc-receive 鉤子的退出狀態僅決定傳送給它的命令組的成功或失敗,除非使用了原子推送。

post-receive

此鉤子由 git-receive-pack[1] 呼叫,當它響應 git push 並更新其倉庫中的引用時。此鉤子在遠端倉庫上執行一次,在所有建議的引用更新都處理完畢並且至少有一個引用作為結果被更新之後。

此鉤子不接受引數。它透過標準輸入接收成功更新的每個引用的一行,格式與 pre-receive 鉤子相同。

此鉤子不影響 git receive-pack 的結果,因為它是在實際工作完成後呼叫的。

這取代了 post-update 鉤子,因為它除了獲取所有引用的名稱外,還能獲取它們的舊值和新值。

標準輸出和標準錯誤輸出都會轉發到另一端的 git send-pack,因此您可以簡單地 echo 訊息給使用者。

預設的 post-receive 鉤子是空的,但 Git 發行版中的 contrib/hooks 目錄提供了一個示例指令碼 post-receive-email,它實現了傳送提交電子郵件的功能。

git push --push-option=... 命令列上給定的推送選項數量可以從環境變數 GIT_PUSH_OPTION_COUNT 中讀取,選項本身則在 GIT_PUSH_OPTION_0GIT_PUSH_OPTION_1 等變數中找到。如果協商後不使用推送選項階段,則不會設定環境變數。如果客戶端選擇使用推送選項但未傳輸任何選項,則計數變數將設定為零,即 GIT_PUSH_OPTION_COUNT=0

有關更多詳細資訊,請參見 git-receive-pack[1] 中的“post-receive”部分。

post-update

此鉤子由 git-receive-pack[1] 呼叫,當它響應 git push 並更新其倉庫中的引用時。它在所有引用都更新後在遠端倉庫上執行一次。

它接受可變數量的引數,每個引數都是實際更新的引用的名稱。

此鉤子主要用於通知,不能影響 git receive-pack 的結果。

post-update 鉤子可以識別哪些頭被推送,但它不知道它們的原始值和更新值,因此它不是記錄舊..新狀態的好地方。 post-receive 鉤子確實會獲取引用的原始值和更新值。如果您需要這些值,可以考慮使用它。

啟用時,預設的 post-update 鉤子會執行 git update-server-info 以保持啞傳輸(例如 HTTP)使用的資訊最新。如果您正在釋出一個可透過 HTTP 訪問的 Git 倉庫,您應該啟用此鉤子。

標準輸出和標準錯誤輸出都會轉發到另一端的 git send-pack,因此您可以簡單地 echo 訊息給使用者。

reference-transaction

此鉤子由任何執行引用更新的 Git 命令呼叫。它在引用事務準備、提交或中止時執行,因此可能會被多次呼叫。此鉤子還支援符號引用更新。

此鉤子只接受一個引數,即給定引用事務的當前狀態:

  • “prepared”(準備):所有引用更新都已排隊到事務中,並且引用已在磁碟上鎖定。

  • “committed”(已提交):引用事務已提交,所有引用現在都具有各自的新值。

  • “aborted”(已中止):引用事務已中止,未執行任何更改,並且鎖已釋放。

對於新增到事務中的每個引用更新,鉤子會透過標準輸入接收一行,格式如下:

<old-value> SP <new-value> SP <ref-name> LF

其中 <old-value> 是傳遞給引用事務的舊物件名稱,<new-value> 是要儲存在引用中的新物件名稱,<ref-name> 是引用的完整名稱。當不顧其當前值強制更新引用或要重新建立引用時,<old-value> 是全零物件名稱。為了區分這些情況,您可以透過 git rev-parse 檢查 <ref-name> 的當前值。

對於符號引用更新,<old_value><new-value> 欄位可以表示引用而不是物件。引用將以 ref: 字首表示,例如 ref:<ref-target>

鉤子的退出狀態除了“prepared”狀態外,在任何狀態下都會被忽略。在“prepared”狀態下,非零退出狀態將導致事務中止。在這種情況下,鉤子將不會以“aborted”狀態被呼叫。

push-to-checkout

此鉤子由 git-receive-pack[1] 呼叫,當它響應 git push 並更新其倉庫中的引用時,以及當推送嘗試更新當前檢出的分支並且 receive.denyCurrentBranch 配置變數設定為 updateInstead 時。如果遠端倉庫的工作樹和索引與當前檢出的提交有任何不同,預設情況下會拒絕此類推送;當工作樹和索引都與當前提交匹配時,它們會更新以匹配新推送的分支尖端。此鉤子用於覆蓋預設行為。

此鉤子接收將用於更新當前分支尖端的提交。它可以透過非零狀態退出以拒絕推送(此時,它不得修改索引或工作樹)。或者,它可以在當前分支尖端更新為新提交時,對工作樹和索引進行任何必要的更改,使其達到所需狀態,並以零狀態退出。

例如,鉤子可以簡單地執行 git read-tree -u -m HEAD "$1",以模擬以 git push 反向執行的 git fetch,因為 git read-tree -u -m 的雙樹形式本質上與 git switchgit checkout 相同,後者在切換分支的同時保留工作樹中不干擾分支之間差異的本地更改。

pre-auto-gc

此鉤子由 git gc --auto 呼叫(參見 git-gc[1])。它不接受引數,並且從此指令碼以非零狀態退出會導致 git gc --auto 中止。

post-rewrite

此鉤子由重寫提交的命令呼叫(當 git-commit[1] 使用 --amend 呼叫時,以及 git-rebase[1];然而,像 git-fast-import[1]git-filter-repo 這樣的完整歷史(重)寫工具通常不會呼叫它!)。它的第一個引數表示呼叫它的命令:目前是 amendrebase 之一。將來可能會傳遞更多依賴於命令的引數。

鉤子透過標準輸入接收重寫提交的列表,格式如下:

<old-object-name> SP <new-object-name> [ SP <extra-info> ] LF

extra-info 再次取決於命令。如果為空,則前面的空格也會被省略。目前,沒有命令傳遞任何 extra-info

鉤子始終在自動註釋複製(參見 git-config[1] 中的“notes.rewrite.<command>”)發生後執行,因此可以訪問這些註釋。

以下命令特定的註釋適用:

rebase

對於 squashfixup 操作,所有被合併的提交都將列為重寫到合併後的提交。這意味著將有多個行共享相同的 new-object-name

提交保證按照它們被 rebase 處理的順序進行列出。

sendemail-validate

此鉤子由 git-send-email[1] 呼叫。

它接受以下命令列引數。它們是:1. 包含要傳送電子郵件內容的檔案的名稱。2. 包含電子郵件 SMTP 頭的檔案的名稱。

SMTP 頭以與傳遞給使用者郵件傳輸代理 (MTA) 相同的方式傳遞。實際上,傳送給使用者 MTA 的電子郵件是 $2 的內容後跟 $1 的內容。

下面顯示了一些常見頭的示例。請注意大小寫和多行製表符結構。

From: Example <from@example.com>
To: to@example.com
Cc: cc@example.com,
 A <author@example.com>,
 One <one@example.com>,
 two@example.com
Subject: PATCH-STRING

以非零狀態退出會導致 git send-email 在傳送任何電子郵件之前中止。

執行鉤子時會設定以下環境變數。

GIT_SENDEMAIL_FILE_COUNTER

一個基於 1 的計數器,每傳送一個包含電子郵件的檔案(不包括任何 FIFO)就遞增一。此計數器不遵循補丁系列計數方案。它將始終從 1 開始,並以 GIT_SENDEMAIL_FILE_TOTAL 結束。

GIT_SENDEMAIL_FILE_TOTAL

將要傳送的檔案總數(不包括任何 FIFO)。此計數器不遵循補丁系列計數方案。它將始終等於要傳送的檔案數量,無論是否有封面信。

例如,這些變數可用於驗證補丁系列。

Git 附帶的示例 sendemail-validate 鉤子會檢查所有已傳送的補丁(不包括封面信)是否可以在上游倉庫的預設分支上無衝突地應用。留下了一些佔位符,用於在給定系列的所有補丁應用後執行額外的驗證步驟。

fsmonitor-watchman

當配置選項 core.fsmonitor 根據要使用的鉤子版本設定為 .git/hooks/fsmonitor-watchman.git/hooks/fsmonitor-watchmanv2 時,會呼叫此鉤子。

版本 1 接受兩個引數:版本號 (1) 和自 1970 年 1 月 1 日午夜以來的納秒級時間。

版本 2 接受兩個引數:版本號 (2) 和一個用於標識自該令牌以來更改的令牌。對於 watchman,這將是時鐘 ID。此版本必須在檔案列表之前將新令牌後跟一個 NUL 輸出到標準輸出。

鉤子應將工作目錄中自請求時間以來可能已更改的所有檔案列表輸出到標準輸出。邏輯應包含所有可能的變化,以免遺漏任何潛在更改。路徑應相對於工作目錄的根目錄,並以單個 NUL 分隔。

包含實際未更改的檔案是可以的。所有更改,包括新建和刪除的檔案,都應包含在內。當檔案重新命名時,舊名稱和新名稱都應包含在內。

Git 將根據給定的路徑名限制它檢查更改的檔案以及檢查未跟蹤檔案的目錄。

告訴 Git“所有檔案都已更改”的一種最佳化方法是返回檔名 /

退出狀態決定 Git 是否將使用鉤子資料來限制其搜尋。出錯時,它將回退到驗證所有檔案和資料夾。

p4-changelist

此鉤子由 git-p4 submit 呼叫。

p4-changelist 鉤子在使用者編輯完變更列表訊息後執行。可以透過 --no-verify 選項繞過它。它接受一個引數,即包含建議的變更列表文字的檔名。以非零狀態退出會導致命令中止。

鉤子允許編輯變更列表檔案,可用於將文字規範化為某些專案標準格式。它還可以在檢查訊息檔案後拒絕提交。

執行 git-p4 submit --help 獲取詳細資訊。

p4-prepare-changelist

此鉤子由 git-p4 submit 呼叫。

p4-prepare-changelist 鉤子在準備好預設變更列表訊息後、編輯器啟動前執行。它接受一個引數,即包含變更列表文字的檔名。從此指令碼以非零狀態退出將中止程序。

此鉤子的目的是就地編輯訊息檔案,並且不會被 --no-verify 選項抑制。即使設定了 --prepare-p4-only,也會呼叫此鉤子。

執行 git-p4 submit --help 獲取詳細資訊。

p4-post-changelist

此鉤子由 git-p4 submit 呼叫。

p4-post-changelist 鉤子在 P4 中成功提交後呼叫。它不接受引數,主要用於通知,不能影響 git p4 提交操作的結果。

執行 git-p4 submit --help 獲取詳細資訊。

p4-pre-submit

此鉤子由 git-p4 submit 呼叫。它不接受引數,也不接受標準輸入。從此指令碼以非零狀態退出會阻止 git-p4 submit 啟動。它可以透過 --no-verify 命令列選項繞過。執行 git-p4 submit --help 獲取詳細資訊。

post-index-change

此鉤子在 read-cache.c do_write_locked_index 中寫入索引時呼叫。

傳遞給鉤子的第一個引數是工作目錄是否更新的指示器。“1”表示工作目錄已更新,“0”表示工作目錄未更新。

傳遞給鉤子的第二個引數是索引是否更新以及 skip-worktree 位是否可能已更改的指示器。“1”表示 skip-worktree 位可能已更新,“0”表示它們未更新。

鉤子執行時只有一個引數應設定為“1”。鉤子傳遞“1”、“1”的情況不應發生。

另請參閱

GIT

Git[1] 套件的一部分

scroll-to-top