git格式化后在预提交中添加相同的文件,无法添加已删除的文件
git add same files in precommit after formatting, cannot add deleted files
我有一个反应项目,我们在每次推送之前手动格式化我们的代码。所以从逻辑上讲,我使用 husky
.
设置 precommit
挂钩
这是预提交挂钩
#!/bin/sh
. "$(dirname "[=11=]")/_/husky.sh"
added_files=$(git diff --name-only --cached)
yarn fix
git add ${added_files}
我想“重新添加”相同的文件,正如提交作者的意图(yarn fix 运行在整个项目上)。
现在这个钩子工作得很好,直到我删除了一些文件。
git status
的输出:
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: .babelrc
modified: .gitignore
modified: package.json
modified: public/index.html
deleted: src/App.css
git diff --name-only --cached
的输出:
.babelrc
.gitignore
package.json
public/index.html
src/App.css
pre-commit
钩子的输出:
yarn run v1.22.10
$ semistandard --fix
Done in 1.23s.
fatal: pathspec 'src/App.css' did not match any files
husky - pre-commit hook exited with code 128 (error)
似乎无法“重新添加”已删除的文件。什么是更好的解决方案?
原来是太简单了。通过添加 --diff-filter 修复,这将过滤掉已删除的文件。
#!/bin/sh
. "$(dirname "[=10=]")/_/husky.sh"
added_files=$(git diff --name-only --cached --diff-filter=d)
yarn fix
git add ${added_files}
我有一个反应项目,我们在每次推送之前手动格式化我们的代码。所以从逻辑上讲,我使用 husky
.
precommit
挂钩
这是预提交挂钩
#!/bin/sh
. "$(dirname "[=11=]")/_/husky.sh"
added_files=$(git diff --name-only --cached)
yarn fix
git add ${added_files}
我想“重新添加”相同的文件,正如提交作者的意图(yarn fix 运行在整个项目上)。
现在这个钩子工作得很好,直到我删除了一些文件。
git status
的输出:
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: .babelrc
modified: .gitignore
modified: package.json
modified: public/index.html
deleted: src/App.css
git diff --name-only --cached
的输出:
.babelrc
.gitignore
package.json
public/index.html
src/App.css
pre-commit
钩子的输出:
yarn run v1.22.10
$ semistandard --fix
Done in 1.23s.
fatal: pathspec 'src/App.css' did not match any files
husky - pre-commit hook exited with code 128 (error)
似乎无法“重新添加”已删除的文件。什么是更好的解决方案?
原来是太简单了。通过添加 --diff-filter 修复,这将过滤掉已删除的文件。
#!/bin/sh
. "$(dirname "[=10=]")/_/husky.sh"
added_files=$(git diff --name-only --cached --diff-filter=d)
yarn fix
git add ${added_files}