[英]How to apply eslint/prettier auto-fixes in git-hook
我想知道如何在git-hook
pre-push
階段應用eslint
和prettier
自動修復。 我試過這樣的事情:
./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.