鑰匙要點
- git掛鉤是在某些操作之前或之後運行的簡單腳本,例如對文件的測試語法進行測試語法,並且可以用環境可以使用的任何語言編寫。 存在兩種類型的掛鉤:在開發人員的系統上運行的客戶端,以及在託管Git存儲庫的服務器上運行的服務器端。
- > git掛鉤不是與您的項目分配的,也不能自動安裝它們,因此為您的鉤子創建一個生活並告訴您的合作者使用它們是有益的。
>>>>>> > git鉤是自動化項目工作流程,使您能夠驗證代碼,提交消息,確保環境適當以及更多的強大手段。 - >
- git鉤是在某些操作之前或之後運行的簡單腳本。它們對於各種任務很有用,但是我主要發現它們對於客戶端驗證有用,因此可以防止簡單的錯誤。例如,您可以在要投入的文件上測試語法,甚至可以運行測試。我寫的鉤子可以驗證樹枝語法,將jshint運行到標準等等。 > 通過設計,Git鉤子也非常簡單。如果腳本是可執行的,則Git將運行這些掛鉤,並且GIT將允許操作(例如,提交或推動)只要掛鉤退出而沒有錯誤(狀態0)。掛鉤可以用環境可以使用的任何語言編寫。
有兩種類型的鉤子:
>客戶端 - 這些在開發人員的系統上運行
>服務器端 - 這些運行在託管Git存儲庫的服務器上
-
本文將不介紹
- >服務器端鉤子。但是,請注意,如果您的項目在GitHub之類的服務上,則服務器端掛鉤通常不適用。在GitHub上,相當於服務器端掛鉤的是使用服務和Webhooks,可以在您的項目設置中找到。 >
- 鉤文件
在該目錄中,您會看到類似的內容:
>我們將重點關注在允許提交之前運行的前簽名掛鉤。
示例鉤子:驗證PHP語法<span>git clone git@github.com:symfony/symfony.git </span><span>cd symfony </span><span>ls .git/hooks</span>
>我們將以一個非常簡單的掛鉤開始,用bash編寫,該掛鉤驗證所犯下的php代碼具有有效的語法。這是為了防止“快速”但破裂的提交發生。當然,我勸阻幾乎沒有測試的“簡單提交”,但這並不意味著它們不會發生。
>applypatch-msg.sample commit-msg.sample post-update.sample pre-applypatch.sample pre-commit pre-commit.sample prepare-commit-msg.sample pre-push.sample pre-rebase.sample update.samplein .git/hooks我們可以啟動一個名為Pre-Commit的新文件。它必須具有執行權限:
>
<span>git clone git@github.com:symfony/symfony.git </span><span>cd symfony </span><span>ls .git/hooks</span>
>您可以使用自己喜歡的編輯器開始寫作。首先,我們需要Shebang。我最喜歡的方法是使用/usr/bin/env,因為這使用了我們想要的應用程序的正確路徑,而不是硬編碼且可能是無效的路徑。目前,我們將不斷失敗,以便我們可以輕鬆測試。
>applypatch-msg.sample commit-msg.sample post-update.sample pre-applypatch.sample pre-commit pre-commit.sample prepare-commit-msg.sample pre-push.sample pre-rebase.sample update.samplePHP具有語法驗證的有用選項:-l。它需要一個文件參數,因此我們將不得不循環瀏覽正在更改的任何PHP文件。為簡單起見,我們將假設任何投入的PHP文件始終以.php結尾。由於掛鉤是從存儲庫的根部運行的,因此我們可以使用標準GIT命令獲取有關更改的信息,例如GIT狀態。
#Always Fail Line上方,我們可以使用以下內容來修改所有PHP文件:
>說明:
<span>cd .git/hooks </span><span>touch pre-commit </span><span>chmod +x pre-commit</span>
> php_files =在沒有定界符的情況下完成bash分配,但請注意,引用變量需要$ deLimiter
- $()是“獲取輸出”的語法。不需要引用它。
- > grep被用於檢查添加(a)和修改文件(m)
- > >尷尬在這裡用於打印$ 2。完整的git狀態 - 剛開始時有額外的空間和額外的數據,因此我們要刪除它。尷尬還可以自動剝離。
- grep再次被使用,但現在正在檢查以確保行以.php
- 結束
- 現在,我們可以用for循環驗證每個文件:
這似乎有些奇怪,但是! php -l“ $ i”(請注意避免空間問題的引號)實際上是在檢查0的返回值為0,而不是true或我們通常在其他語言中期望的任何值。僅供參考,大約等效的PHP代碼將是:
<span>#!/usr/bin/env bash </span><span># Hook that checks PHP syntax </span> <span># Override IFS so that spaces do not count as delimiters </span><span>old_ifs=$IFS </span><span><span>IFS</span>=$'<span title="\n">\n'</span> </span> <span># Always fail </span><span>exit 1</span>我對SRC/SYMFONY/COMPONEN/FINDER/GLOB.PHP進行了錯誤的更改,目的是測試此問題,而Git Commit -M'test'的輸出就像:
>我使循環儘早退出了整個腳本,最終可能不是我們想要的。實際上,我們可能希望摘要要解決的問題,而不是必須繼續嘗試進行。任何人最終都會很容易感到沮喪,甚至可能學會使用git commits-不 - 驗證以完全繞過鉤子。
<span>php_files=<span>$(git status --short | grep -E '^(A|M)' | awk '{ print }' | grep -E '\.php$')</span></span>>
因此,我們不要以php -L的錯誤退出,但我仍然想保持易於閱讀的內容:
>我進行了兩個不良修改,並嘗試進行提交的嘗試看起來像這樣:
<span>git clone git@github.com:symfony/symfony.git </span><span>cd symfony </span><span>ls .git/hooks</span>現在的行動是解決這些問題,測試並嘗試再次提交。
要完成鉤子腳本,請在腳本底部刪除1個出口1。嘗試提交有效的PHP文件,並且應該按正常工作。
共享鉤子鉤子未與您的項目分發,也不能自動安裝它們。因此,您最好的行動是為您創建一個鉤子居住的地方(可能位於同一存儲庫中),並告訴您的合作者使用它們。如果您對他們來說很容易,那麼他們更有可能這樣做。
>
>做到這一點的一種簡單方法是創建一個掛鉤目錄和一個簡單的安裝程序install-hooks.sh鏈接它們(而不是複制):
任何克隆您的項目的任何人都可以簡單地運行bash install-hooks.sh克隆後。
>applypatch-msg.sample commit-msg.sample post-update.sample pre-applypatch.sample pre-commit pre-commit.sample prepare-commit-msg.sample pre-push.sample pre-rebase.sample update.sample這也具有將鉤子保持在版本控制下的好處。
>
其他鉤子
prepary-commit-msg - 如果沒有給出一個默認提交消息。
>- commit-msg - 提交消息驗證。
- >後委員會 - 在成功的提交後運行。
- 預算 - 在驗證遙控器後的GIT推動之前運行。它需要2個參數:遙控器的名稱,以及它的URL。
- > > reperbase - 在git rebase之前運行。
- >後簽名 - 成功結帳後運行。
- >後合併 - 成功合併後運行。
- 這些鉤子通常與預先投入的鉤子相同,儘管它們會參與爭論。檢查後的一個用例是確保文件始終獲得適當的權限(因為GIT僅跟踪可執行文件,而不是可執行的和符號鏈接):
>>>>>
[subproject] message
<span>cd .git/hooks </span><span>touch pre-commit </span><span>chmod +x pre-commit</span>
結論 git鉤是自動化項目工作流程的強大手段。您可以驗證代碼,提交消息,確保環境正確,還有很多。您使用Git鉤子有什麼有趣的東西嗎?在評論中讓我們知道!
><span>#!/usr/bin/env bash </span><span># Hook that checks PHP syntax </span> <span># Override IFS so that spaces do not count as delimiters </span><span>old_ifs=$IFS </span><span><span>IFS</span>=$'<span title="\n">\n'</span> </span> <span># Always fail </span><span>exit 1</span>經常詢問有關git鉤的問題(常見問題解答)
git掛鉤的不同類型是什麼?客戶端鉤子是由諸如投入和合併之類的操作觸發的,而服務器端掛鉤在網絡操作上運行,例如接收推動提交。可以自定義每個鉤子以滿足您的特定操作需求。
如何創建一個git掛鉤?
創建一個git鉤,導航到存儲庫中的.git/hooks目錄。在這裡,您會找到各種掛鉤的示例腳本。要創建一個新的鉤子,請創建一個沒有任何擴展名的文件(例如,預先命中),使其可執行,並編寫您的腳本。
>如何使用git掛鉤進行自動化?
> git鉤可用於自動化開發工作流中的各種任務。例如,您可以在每個提交之前使用預製掛鉤自動運行測試或代碼上的襯裡。這樣可以確保僅測試和正確格式的代碼才能將其投入到存儲庫中。
我可以與我的團隊共享git鉤嗎?
默認情況下,當您克隆一個存儲庫時,不包括git掛鉤。這是因為它們存儲在.git目錄中,該目錄未版本化。但是,您可以通過將它們存儲在項目中的單獨目錄中,並創建一個腳本以將它們鏈接到.git/hooks中。
>我如何使用git掛鉤執行政策? >
> git掛鉤可用於執行項目或公司政策。例如,您可以在服務器端使用接收前的鉤子來拒絕任何不符合您策略的推動(例如,提交不遵循某種格式的提交)。>
我可以用來寫git鉤嗎?
git掛鉤是腳本,因此您可以用任何腳本語言編寫它們。默認樣本是用bash編寫的,但是您可以使用任何您喜歡的語言,例如Python或Ruby。 GIT鉤可用於將Git與其他工具集成在一起。例如,您可以使用郵票後鉤子在連續集成服務器中觸發構建或在您的問題跟踪系統中更新票證。>
如何調試git鉤?調試git掛鉤可以通過將信息寫入掛鉤腳本的文件來完成。例如,您可以將命令的輸出重定向到日誌文件以稍後進行檢查。 >我可以忽略git鉤嗎?提交,您可以將–No-Verify選項與Git Commit命令一起使用。當您進行不需要鉤子中實現的支票的次要更改時,這可能很有用。>
強大,應謹慎使用它們。書面不好的鉤子可能會導致問題,包括拒絕所有提交甚至數據丟失。部署之前,請務必徹底測試您的鉤子。以上是git鉤介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

中国女性科技力量在AI领域的崛起:荣耀与DeepSeek合作背后的女性故事女性在科技领域的贡献日益显著。中国科技部数据显示,女性科技工作者数量庞大,在AI算法开发中展现出独特的社会价值敏感性。本文将聚焦荣耀手机,探究其率先接入DeepSeek大模型背后的女性团队力量,展现她们如何推动科技进步,重塑科技发展价值坐标系。2024年2月8日,荣耀正式上线DeepSeek-R1满血版大模型,成为安卓阵营首家接入DeepSeek的厂商,引发用户热烈反响。这一成功背后,女性团队成员在产品决策、技术攻坚和用户

DeepSeek公司在知乎發布技術文章,詳細介紹了其DeepSeek-V3/R1推理系統,並首次公開關鍵財務數據,引發業界關注。文章顯示,該系統單日成本利潤率高達545%,創下全球AI大模型盈利新高。 DeepSeek的低成本策略使其在市場競爭中佔據優勢。其模型訓練成本僅為同類產品的1%-5%,V3模型訓練成本僅為557.6萬美元,遠低於競爭對手。同時,R1的API定價僅為OpenAIo3-mini的1/7至1/2。這些數據證明了DeepSeek技術路線的商業可行性,也為AI大模型的高效盈利樹立了

美的即将发布搭载DeepSeek大模型的首款空调——美的鲜净感空气机T6,发布会定于3月1日下午1点30分举行。这款空调配备先进的空气智驾系统,可根据环境智能调节温度、湿度和风速等参数。更重要的是,它集成了DeepSeek大模型,支持超过40万条AI语音指令。美的此举引发业界热议,尤其关注白电产品与大模型结合的意义。不同于传统空调简单的温度设定,美的鲜净感空气机T6能够理解更复杂、更模糊的指令,并根据家庭环境智能调节湿度等,显著提升用户体验。

網站建設只是第一步:SEO與反向鏈接的重要性 建立網站只是將其轉化為寶貴營銷資產的第一步。您需要進行SEO優化,以提高網站在搜索引擎中的可見度,吸引潛在客戶。反向鏈接是提升網站排名的關鍵,它向谷歌和其他搜索引擎表明您的網站權威性和可信度。 並非所有反向鏈接都有利:識別並避免有害鏈接 並非所有反向鏈接都有益。有害鏈接會損害您的排名。優秀的免費反向鏈接檢查工具可以監控鏈接到您網站的來源,並提醒您注意有害鏈接。此外,您還可以分析競爭對手的鏈接策略,從中學習借鑒。 免費反向鏈接檢查工具:您的SEO情報員

DeepSeek-R1賦能百度文庫與網盤:深度思考與行動的完美融合短短一個月內,DeepSeek-R1已迅速融入眾多平台。百度憑藉大膽的戰略佈局,將DeepSeek作為第三方模型夥伴,整合進自身生態系統,這標誌著其“大模型 搜索”生態戰略的重大進展。百度搜索和文心智能體平台率先接入DeepSeek及文心大模型的深度搜索功能,為用戶提供免費的AI搜索體驗。同時,“百度一下,你就知道”的經典slogan回歸,新版百度APP也整合了文心大模型和DeepSeek的能力,推出“AI搜索”、“全網信息提煉”

此基於GO的網絡漏洞掃描儀有效地確定了潛在的安全弱點。 它利用了GO的並發功能的速度功能,包括服務檢測和漏洞匹配。讓我們探索它的能力和道德

AI及時的代碼生成工程:開發人員指南代碼開發的景觀已準備好進行重大轉變。 掌握大型語言模型(LLM)和及時工程對於未來幾年對開發人員至關重要。 Th


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Dreamweaver Mac版
視覺化網頁開發工具