Git 钩子预提交不起作用
Git hook precommit doesn't working
它是一个 git 预提交挂钩
假设对每个修改(暂存)的文件执行 esformatter 命令,
#!/bin/sh
for fil in $(git diff --name-only --staged | grep ".js"); do
esformatter -i$ fil & git add $fil;
done
git commit -m "Adding format to files"
其实我希望这段代码在同一次提交中执行,但我不知道该怎么做。
该代码实际上可以工作,直到完成部分。但是这些文件并没有明显地添加到提交中,所以这就是为什么我需要提交部分。
此致
首先想想这是不是你想走的路。即时修改人们的提交,很可能会导致难以理清的混乱局面。
其次,如果您想将更改保留在同一提交中,您只需删除 git commit -m "Adding format to files"
行,这样 githook 就不会进行单独的提交。
如果这不起作用,您可以尝试将其添加为 post-commit 挂钩并执行 git commit --amend
您不是在修改后添加文件。
esformatter -i$ fil & git add $fil
您可能打算在这里使用 &&
,而不是 &
。 &
将在后台启动格式化程序,并同时暂存文件的当前内容(可能尚未格式化,甚至处于不可预测的状态)。即:
task1 && task2
– 同步执行task1
,如果task1
成功则执行task2
task1 & task2
- 异步执行task1
,同时执行task2
(在这种情况下,task2
是同步执行的,因为它后面跟着;
但是换行符同义)
它是一个 git 预提交挂钩 假设对每个修改(暂存)的文件执行 esformatter 命令,
#!/bin/sh
for fil in $(git diff --name-only --staged | grep ".js"); do
esformatter -i$ fil & git add $fil;
done
git commit -m "Adding format to files"
其实我希望这段代码在同一次提交中执行,但我不知道该怎么做。 该代码实际上可以工作,直到完成部分。但是这些文件并没有明显地添加到提交中,所以这就是为什么我需要提交部分。
此致
首先想想这是不是你想走的路。即时修改人们的提交,很可能会导致难以理清的混乱局面。
其次,如果您想将更改保留在同一提交中,您只需删除 git commit -m "Adding format to files"
行,这样 githook 就不会进行单独的提交。
如果这不起作用,您可以尝试将其添加为 post-commit 挂钩并执行 git commit --amend
您不是在修改后添加文件。
esformatter -i$ fil & git add $fil
您可能打算在这里使用 &&
,而不是 &
。 &
将在后台启动格式化程序,并同时暂存文件的当前内容(可能尚未格式化,甚至处于不可预测的状态)。即:
task1 && task2
– 同步执行task1
,如果task1
成功则执行task2
task1 & task2
- 异步执行task1
,同时执行task2
(在这种情况下,task2
是同步执行的,因为它后面跟着;
但是换行符同义)