git - 预提交 Hook 获取部分提交的文件列表

标签 git pre-commit-hook

我知道运行 git-diff 和其他工具可以识别存储库中的更改,但是当我进行部分提交时,我只需要将已提交的文件(而不是所涉及的整个文件集)传递给预提交 Hook 。

例如,我修改了三个文件,只提交了两个,我希望预提交 Hook 知道这两个文件的名称。

git status --porcelain

M A.c 
M B.c
M C.h

然后我执行:

git commit -m "two files only" A.c B.c

pre-commit 钩子(Hook)如何只获取两个文件的列表?

最佳答案

预提交在提交过程的开始运行... @Vince 的链接是要查看的链接。 Hook 运行后,您的脚本可以使用 git diff --cached --name-only 获取预提交脚本中暂存文件的名称。即使用户为提交准备了更多内容,但仅请求在命令行上提交文件的子集,该命令也能正常工作。

关于git - 预提交 Hook 获取部分提交的文件列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12170523/

相关文章:

git - 将分支加入新的主提交而不 merge ?

git - 在 Hudson 中,如何获取当前构建的 git commit sha?

git - Bonobo Git 服务器 - HTTP 错误 500.19 - 代码 : 0x80070021

Git 预提交 Hook "No error"错误消息

c# - 如何使用 SharpSVN 访问 SVN 预提交消息?

svn - TortoiseSVN 客户端预提交钩子(Hook)检查正在提交的文件的内容

git - 从 Bitbucket 导入到 Stash 并包含历史记录?

git - RubyMine(以及 PHPStorm、IntellijIDEA、PyCharm 等)中 'Commit' 对话框中 'commit changes' 的键盘快捷键是什么?

javascript - 跳过 "npm version"命令中的预提交 Hook

php - 用于检查 PHP 代码覆盖率和 Symfony 代码嗅探器的预提交 Hook