我使用pre-commit鉤子Prettier對我的HTML檔案運行格式化程式:
#!/bin/sh
# Retrieving a list of the staged files
stagedFiles=$(git diff --staged --name-only)
# Format staged files automatically
echo "Formatting with Prettier..."
npx prettier --write $stagedFiles
git add $stagedFiles
在我輸入git commit命令之后和我配置的編輯器打開提交訊息之前,格式成功應用。根據commit.verbose設定,在其中Git附加了一個差異,顯示要提交的內容,但這個差異沒有考慮到所做的更改Prettier——它展示了我的代碼的未格式化版本。如果我隨后中止提交(將訊息留空),我可以看到存盤庫中沒有未暫存的更改;這意味著在pre-commit鉤子執行期間所有格式修改都已正確上演。此外,如果我在訊息中寫入一些文本并在不中止的情況下完成提交,則生成的快照確實包含差異中缺少的所有格式。
我終于得出結論,差異在于。但是存在解決方案嗎?
Git for Windows 版本: 2.33.0
作業系統: Windows 10 21h1 x64
uj5u.com熱心網友回復:
簡短的回答是:pre-commit鉤子不是為了修改要提交的檔案。
您可以與以下理由相關:您提交的內容將是您可以在運行之前查看和測驗的確切內容git commit。
(技術原因是:git創建樹——提交的內容——將在呼叫pre-commit鉤子之前使用)
一pre-commit勾應寫為只讀的行動,這可能會阻止從發生的承諾,例如:如果檔案格式不正確,拒絕與訊息“請執行commitformat.sh提交之前”。
當然,你可以解決這個問題,但是,FWIW,我建議你遵循這個規則。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/405106.html
標籤:
