我正在写一个git pre-commit钩子(Hook)。
该脚本可以重新格式化某些代码,因此可以修改暂存的文件。
如何重新暂存已暂存的所有文件?

最佳答案

如果没有pre-commit hook上下文,则可以使用以下命令get a list of the staged files:

git diff --name-only --cached

因此,如果要重新索引已暂存的文件,可以使用:
git diff --name-only --cached | xargs -l git add

pre-commit hook上下文中,您应该遵循the advices of David Winterbottom并在未进行任何其他操作之前存储未暂存的更改。

此技术使您不必担心索引或更改未上演的更改。
因此,您不必暂存所有已暂存的文件,而不必暂存所有已更新的文件:
# Stash unstaged changes
git stash -q --keep-index

# Edit your project files here
...

# Stage updated files
git add -u

# Re-apply original unstaged changes
git stash pop -q

10-04 13:50