鍍金池/ 問答/Linux/ 關(guān)于git鉤子與工作流的一個疑問

關(guān)于git鉤子與工作流的一個疑問

我現(xiàn)在在開發(fā)JS應(yīng)用,利用husky做了pre-commit鉤子,在commit之前會跑一遍prettier,但是現(xiàn)在又尷尬了,prettier跑完了之后git會繼續(xù)commit,這導(dǎo)致git里會剩下一堆格式化之后的代碼沒有提交,所以我還得繼續(xù)add & commit,額外多了一個commit記錄。
我在想,最好只能在add之前做一個pre-add,不過好像沒有這個鉤子。所以想問一下各位,你們有什么好的方法避免在pre-commit之后剩一堆unstaged changes么?

回答
編輯回答
避風(fēng)港

官方有一些建議的,關(guān)于格式化后的文件在鉤子里再add一次,滿足不了你的需求嗎?

#!/bin/sh
jsfiles=$(git diff --cached --name-only --diff-filter=ACM "*.js" "*.jsx" | tr '\n' ' ')
[ -z "$jsfiles" ] && exit 0

# Prettify all staged .js files
echo "$jsfiles" | xargs ./node_modules/.bin/prettier --write

# Add back the modified/prettified files to staging
echo "$jsfiles" | xargs git add

exit 0

參考:https://prettier.io/docs/en/p...

2017年8月4日 16:45