<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # githooks > 原文: [https://git-scm.com/docs/githooks](https://git-scm.com/docs/githooks) ## 名稱 githooks - Git使用的鉤子 ## 概要 $ GIT_DIR / hooks / *(或`git config core.hooksPath` / *) ## 描述 鉤子是可以放在鉤子目錄中的程序,用于在git的執行中的某些點觸發動作。沒有設置可執行位的掛鉤將被忽略。 默認情況下,hooks目錄為`$GIT_DIR/hooks`,但可以通過`core.hooksPath`配置變量進行更改(參見 [git-config [1]](https://git-scm.com/docs/git-config) )。 在Git調用鉤子之前,它將其工作目錄更改為裸存儲庫中的$ GIT_DIR或非裸存儲庫中工作樹的根。推送期間觸發的掛鉤例外(_預接收_,_更新_,_接收后_,_更新后_, _push-to-checkout_ )總是在$ GIT_DIR中執行。 鉤子可以通過環境,命令行參數和stdin獲取它們的參數。有關詳細信息,請參閱下面每個掛鉤的文檔。 `git init`可能會將掛鉤復制到新存儲庫,具體取決于其配置。有關詳細信息,請參見 [git-init [1]](https://git-scm.com/docs/git-init) 中的“TEMPLATE DIRECTORY”部分。當本文檔的其余部分引用“默認掛鉤”時,它正在討論Git附帶的默認模板。 目前支持的鉤子如下所述。 ## 掛鉤 ### applypatch-MSG 這個鉤子由 [git-am [1]](https://git-scm.com/docs/git-am) 調用。它需要一個參數,即包含建議的提交日志消息的文件的名稱。退出非零狀態會導致`git am`在應用修補程序之前中止。 允許鉤子編輯消息文件,并可用于將消息規范化為某種項目標準格式。它還可以用于在檢查消息文件后拒絕提交。 默認 _applypatch-msg_ 掛鉤,如果啟用,則運行 _commit-msg_ 掛鉤,如果后者啟用的話。 ### 預applypatch 這個鉤子由 [git-am [1]](https://git-scm.com/docs/git-am) 調用。它不需要參數,并且在應用補丁之后但在提交之前調用。 如果它以非零狀態退出,則在應用補丁后將不會提交工作樹。 它可用于檢查當前工作樹,如果未通過某些測試則拒絕提交。 默認的 _pre-applypatch_ 掛鉤啟用時會運行_預提交_掛鉤,如果后者啟用的話。 ### 后applypatch 這個鉤子由 [git-am [1]](https://git-scm.com/docs/git-am) 調用。它不需要參數,并在應用補丁并進行提交后調用。 此掛鉤主要用于通知,不會影響`git am`的結果。 ### 預提交 這個鉤子由 [git-commit [1]](https://git-scm.com/docs/git-commit) 調用,可以用`--no-verify`選項旁路。它不需要任何參數,并在獲取建議的提交日志消息和進行提交之前調用。退出此腳本的非零狀態會導致`git commit`命令在創建提交之前中止。 默認的_預提交_掛鉤,在啟用時,會捕獲帶有尾隨空格的行的引入,并在找到這樣的行時中止提交。 如果命令不會調出編輯器來修改提交消息,則使用環境變量`GIT_EDITOR=:`調用所有`git commit`掛鉤。 ### 準備提交-MSG 在準備默認日志消息之后,在編輯器啟動之前, [git-commit [1]](https://git-scm.com/docs/git-commit) 會調用此掛鉤。 它需要一到三個參數。第一個是包含提交日志消息的文件的名稱。第二個是提交消息的來源,可以是:`message`(如果給出了`-m`或`-F`選項); `template`(如果給出了`-t`選項或設置了配置選項`commit.template`); `merge`(如果提交是合并或`.git/MERGE_MSG`文件存在); `squash`(如果存在`.git/SQUASH_MSG`文件);或`commit`,然后是提交SHA-1(如果給出了`-c`,`-C`或`--amend`選項)。 如果退出狀態為非零,則`git commit`將中止。 掛鉤的目的是在適當的位置編輯消息文件,并且不會被`--no-verify`選項抑制。非零退出意味著掛鉤失敗并中止提交。它不應該用作預提交鉤子的替代品。 Git附帶的示例`prepare-commit-msg`掛鉤刪除了在提交模板的注釋部分中找到的幫助消息。 ### 提交-MSG 這個鉤子由 [git-commit [1]](https://git-scm.com/docs/git-commit) 和 [git-merge [1]](https://git-scm.com/docs/git-merge) 調用,可以用`--no-verify`選項繞過。它需要一個參數,即包含建議的提交日志消息的文件的名稱。以非零狀態退出會導致命令中止。 允許鉤子編輯消息文件,并可用于將消息規范化為某種項目標準格式。它還可以用于在檢查消息文件后拒絕提交。 默認的 _commit-msg_ 掛鉤啟用時會檢測到重復的“Signed-off-by”行,如果找到,則中止提交。 ### 提交后 這個鉤子由 [git-commit [1]](https://git-scm.com/docs/git-commit) 調用。它不需要參數,并在提交后調用。 此掛鉤主要用于通知,不會影響`git commit`的結果。 ### 前底墊 這個鉤子由 [git-rebase [1]](https://git-scm.com/docs/git-rebase) 調用,可以用來防止分支被重新綁定。可以用一個或兩個參數調用鉤子。第一個參數是分支系列的上游。第二個參數是重新分支的分支,在重新定位當前分支時不會設置。 ### 后檢出 更新工作樹后運行 [git-checkout [1]](https://git-scm.com/docs/git-checkout) 時會調用此掛鉤。鉤子被賦予三個參數:前一個HEAD的ref,新HEAD的ref(可能已經或可能沒有改變),以及一個標志,指示檢出是否是分支檢出(更改分支,標志= 1)或文件簽出(從索引中檢索文件,標志= 0)。這個鉤子不會影響`git checkout`的結果。 它也在 [git-clone [1]](https://git-scm.com/docs/git-clone) 之后運行,除非使用`--no-checkout`(`-n`)選項。給鉤子的第一個參數是null-ref,第二個是新HEAD的ref,而標志總是1.同樣對于`git worktree add`,除非使用`--no-checkout`。 此掛鉤可用于執行存儲庫有效性檢查,如果不同則自動顯示與先前HEAD的差異,或設置工作目錄元數據屬性。 ### 后合并 這個鉤子由 [git-merge [1]](https://git-scm.com/docs/git-merge) 調用,當在本地存儲庫上完成`git pull`時會發生這種情況。鉤子接受一個參數,一個狀態標志,指定合并是否是一個壓縮合并。如果由于沖突導致合并失敗,則此掛鉤不會影響`git merge`的結果,也不會執行。 該鉤子可以與相應的預提交鉤子一起使用,以保存和恢復與工作樹相關聯的任何形式的元數據(例如:權限/所有權,ACLS等)。有關如何執行此操作的示例,請參閱contrib / hooks / setgitperms.perl。 ### 前推 這個鉤子由 [git-push [1]](https://git-scm.com/docs/git-push) 調用,可用于防止發生推動。使用兩個參數調用鉤子,這兩個參數提供目標遠程的名稱和位置,如果未使用命名遠程,則兩個值將相同。 有關要推送內容的信息在鉤子的標準輸入上提供了以下形式的行: ``` <local ref> SP <local sha1> SP <remote ref> SP <remote sha1> LF ``` 例如,如果運行命令`git push origin master:foreign`,則掛鉤將收到如下所示的行: ``` refs/heads/master 67890 refs/heads/foreign 12345 ``` 雖然將提供完整的40個字符的SHA-1。如果外來參考不存在,`&lt;remote SHA-1&gt;`將為40 `0`。如果要刪除ref,`&lt;local ref&gt;`將作為`(delete)`提供,`&lt;local SHA-1&gt;`將為40 `0`。如果本地提交是由可以擴展的名稱以外的其他東西指定的(例如`HEAD~`或SHA-1),它將按照最初給出的方式提供。 如果此掛鉤以非零狀態退出,則`git push`將在不推送任何內容的情況下中止。可以通過寫入標準錯誤將關于推送拒絕原因的信息發送給用戶。 ### 預接收 當 [git-receive-pack [1]](https://git-scm.com/docs/git-receive-pack) 對`git push`作出反應并更新其存儲庫中的引用時,將調用此掛鉤。在開始更新遠程存儲庫上的refs之前,將調用預接收掛鉤。其退出狀態決定了更新的成功或失敗。 該鉤子為接收操作執行一次。它不需要參數,但是對于每個ref都要更新它在標準輸入上接收格式的一行: ``` <old-value> SP <new-value> SP <ref-name> LF ``` 其中`&lt;old-value&gt;`是存儲在ref中的舊對象名稱,`&lt;new-value&gt;`是要存儲在ref中的新對象名稱,`&lt;ref-name&gt;`是ref的全名。創建新參考時,`&lt;old-value&gt;`為40 `0`。 如果鉤子以非零狀態退出,則不會更新任何引用。如果鉤子退出零,則 [_更新_](#update) 鉤子仍然可以防止更新單個引用。 標準輸出和標準錯誤輸出都轉發到另一端的`git send-pack`,因此您只需為用戶輸入`echo`消息即可。 在`git push --push-option=...`的命令行上給出的推送選項的數量可以從環境變量`GIT_PUSH_OPTION_COUNT`中讀取,選項本身可以在`GIT_PUSH_OPTION_0`,`GIT_PUSH_OPTION_1`中找到,......如果協商不使用推送選項階段,不會設置環境變量。如果客戶端選擇使用推送選項但不傳輸任何選項,則計數變量將設置為零,`GIT_PUSH_OPTION_COUNT=0`。 有關注意事項,請參閱 [git-receive-pack [1]](https://git-scm.com/docs/git-receive-pack) 中的“隔離環境”部分。 ### 更新 當 [git-receive-pack [1]](https://git-scm.com/docs/git-receive-pack) 對`git push`作出反應并更新其存儲庫中的引用時,將調用此掛鉤。在更新遠程存儲庫上的ref之前,將調用更新掛鉤。其退出狀態決定了ref更新的成功或失敗。 鉤子為每個ref更新執行一次,并帶有三個參數: * 要更新的ref的名稱, * 存儲在ref中的舊對象名稱, * 以及要存儲在ref中的新對象名稱。 從更新掛鉤零退出允許更新ref。以非零狀態退出會阻止`git receive-pack`更新該ref。 此掛鉤可用于通過確保對象名稱是提交對象來防止_強制_更新某些引用,該提交對象是舊對象名稱所指定的提交對象的后代。也就是說,執行“僅限快進”政策。 它還可以用于記錄old..new狀態。但是,它并不知道整個分支集合,所以當天真地使用時,它最終會為每個ref發送一封電子郵件。 [_接收后_](#post-receive) 鉤子更適合這種情況。 在限制用戶僅通過線路訪問git命令的環境中,此掛鉤可用于實現訪問控制,而不依賴于文件系統所有權和組成員身份。請參閱 [git-shell [1]](https://git-scm.com/docs/git-shell) ,了解如何使用登錄shell限制用戶只能訪問git命令。 標準輸出和標準錯誤輸出都轉發到另一端的`git send-pack`,因此您只需為用戶輸入`echo`消息即可。 默認_更新_掛鉤,啟用時 - `hooks.allowunannotated`配置選項未設置或設置為false-可防止未注釋的標簽被推送。 ### 后收到 當 [git-receive-pack [1]](https://git-scm.com/docs/git-receive-pack) 對`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_0`,`GIT_PUSH_OPTION_1`中找到,......如果協商不使用推送選項階段,不會設置環境變量。如果客戶端選擇使用推送選項但不傳輸任何選項,則計數變量將設置為零,`GIT_PUSH_OPTION_COUNT=0`。 ### 更新后的 當 [git-receive-pack [1]](https://git-scm.com/docs/git-receive-pack) 對`git push`作出反應并更新其存儲庫中的引用時,將調用此掛鉤。在更新所有引用后,它將在遠程存儲庫上執行一次。 它需要可變數量的參數,每個參數都是實際更新的ref的名稱。 此掛鉤主要用于通知,不會影響`git receive-pack`的結果。 _更新后_掛鉤可以判斷推送的磁頭是什么,但是它不知道它們的原始值和更新值是什么,因此它是一個糟糕的做舊日志的地方。 [_接收后_](#post-receive) 鉤子確實獲得了refs的原始值和更新值。如果你需要它們,你可以考慮它。 啟用后,默認_更新后_掛鉤運行`git update-server-info`,以使啞傳輸(例如HTTP)使用的信息保持最新。如果要發布可通過HTTP訪問的Git存儲庫,則應該啟用此掛鉤。 標準輸出和標準錯誤輸出都轉發到另一端的`git send-pack`,因此您只需為用戶輸入`echo`消息即可。 ### 一鍵檢出 當 [git-receive-pack [1]](https://git-scm.com/docs/git-receive-pack) 對`git push`做出反應并更新其存儲庫中的引用時,以及當push嘗試更新當前已檢出的分支時,將調用此掛鉤并且`receive.denyCurrentBranch`配置變量設置為`updateInstead`。如果工作樹和遠程存儲庫的索引與當前檢出的提交有任何差異,則默認拒絕這樣的推送;當工作樹和索引都與當前提交匹配時,它們會更新以匹配新推送的分支提示。此掛鉤用于覆蓋默認行為。 鉤子接收提交,當前分支的尖端將被更新。它可以以非零狀態退出以拒絕推送(當它這樣做時,它不能修改索引或工作樹)。或者它可以對工作樹和索引進行任何必要的更改,以便在當前分支的提示更新為新提交時將它們置于所需狀態,并以零狀態退出。 例如,鉤子可以簡單地運行`git read-tree -u -m HEAD "$1"`以模擬`git push`與`git push`反向運行的`git fetch`,因為`git read-tree -u -m`的雙樹形式與切換的`git checkout`基本相同分支,同時保持工作樹中的本地更改不會干擾分支之間的差異。 ### 預自動GC 該鉤子由`git gc --auto`調用(參見 [git-gc [1]](https://git-scm.com/docs/git-gc) )。它不帶參數,從此腳本退出非零狀態會導致`git gc --auto`中止。 ### 后重寫 這個鉤子由重寫提交的命令調用( [git-commit [1]](https://git-scm.com/docs/git-commit) 用`--amend`和 [git-rebase [1]](https://git-scm.com/docs/git-rebase) 調用;當前`git filter-branch`執行_不是_打電話給它!)。它的第一個參數表示它被調用的命令:當前`amend`或`rebase`之一。將來可能會傳遞更多與命令相關的參數。 鉤子以格式接收stdin上重寫提交的列表 ``` <old-sha1> SP <new-sha1> [ SP <extra-info> ] LF ``` _extra-info_ 再次依賴于命令。如果為空,則也省略前面的SP。目前,沒有命令傳遞任何 _extra-info_ 。 自動注釋復制后,鉤子總是運行(參見 [git-config [1]](https://git-scm.com/docs/git-config) 中的“notes.rewrite。&lt; command&gt;”),因此可以訪問這些注釋。 以下特定于命令的注釋適用: ``` rebase ``` 對于_壁球_和 _fixup_ 操作,所有被壓縮的提交都被列為被重寫為壓縮的提交。這意味著將有幾行共享相同的 _new-sha1_ 。 保證提交按照rebase處理它們的順序列出。 ### sendemail-驗證 這個鉤子由 [git-send-email [1]](https://git-scm.com/docs/git-send-email) 調用。它需要一個參數,即保存要發送的電子郵件的文件的名稱。退出非零狀態會導致`git send-email`在發送任何電子郵件之前中止。 ### fsmonitor守衛員 當配置選項`core.fsmonitor`設置為`.git/hooks/fsmonitor-watchman`時,將調用此掛鉤。它需要兩個參數,一個版本(當前為1)和自1970年1月1日午夜以來經過的納秒時間。 鉤子應輸出到stdout工作目錄中可能自請求的時間以來可能已更改的所有文件的列表。邏輯應該具有包容性,以便它不會錯過任何潛在的變化。路徑應該相對于工作目錄的根目錄,并由單個NUL分隔。 可以包含實際沒有更改的文件。應包括所有更改,包括新創建和刪除的文件。重命名文件時,應包括舊名稱和新名稱。 Git將限制檢查更改的文件以及根據給定的路徑名??檢查未跟蹤文件的目錄。 告訴git“所有文件都已更改”的優化方法是返回文件名`/`。 退出狀態確定git是否將使用鉤子中的數據來限制其搜索。出錯時,它將回退到驗證所有文件和文件夾。 ### P4-預提交 該鉤子由`git-p4 submit`調用。它不需要參數,也不需要標準輸入。從此腳本退出非零狀態會阻止`git-p4 submit`啟動。運行`git-p4 submit --help`了解詳細信息。 ## GIT 部分 [git [1]](https://git-scm.com/docs/git) 套件
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看