簡體   English   中英

如何在 git-hook 中應用 eslint/prettier 自動修復

[英]How to apply eslint/prettier auto-fixes in git-hook

我想知道如何在git-hook pre-push階段應用eslintprettier自動修復。 我試過這樣的事情:

./node_modules/.bin/eslint index.js --fix
git add .
git commit --amend --no-edit

它修復了我本地存儲庫中的問題,但不會將其推送到遠程。 然后,在我輸入git status它寫到我分別有 1 個和 1 個不同的提交,我必須使用git pull來解決我的問題。 這會在回購中產生超級混亂。

你知道我怎么能做到這一點嗎?

你的混亂部分來自git commit --amend :使用--amend ,git總是重寫HEAD提交,所以你運行git push后的HEAD提交總是與之前的不同。

混亂的另一部分是,因為您的鈎子運行git add . (而不是嘗試有選擇地選擇文件或塊),它將始終在您的工作樹中添加所有內容。 不再需要git add <subdir>/git add -p ...給你:你的pre-push hook 將始終添加磁盤上的所有內容


鈎子(預提交和預推送)恕我直言更適合只讀操作,並能夠在必要時取消操作。

例如:您可以擁有一個lint腳本,帶有check模式(檢查 lint 規則,如果不遵守規則,則以非零代碼退出)和update模式(應用已知的規則修復程序)。 請注意,根據您的短絨,某些規則可能需要一些手動操作。

在 pre-push 鈎子中使用check模式,並可能在腳本中包含update模式,該腳本將另外git add你的文件; 至少,你將重新獲得機會在推動之前回顧你所做的事情

根據建議,您還可以在服務器端的掛鈎中使用check模式來拒絕不符合您選擇的 lint 規則的提交。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM