如何提交由 Git 中的预提交钩子修改的文件

dim*_*ike 8 metadata git hook

我花了几个小时努力使用 Metastore 制作文件的 git 存储元数据(权限/标志/等),我为此而使用hooks/pre-commit

脚本被正确调用,文件“元数据”被修改但未添加到提交中。

我试着打电话:

git add ./metadata 
Run Code Online (Sandbox Code Playgroud)

git add -u ./metadata
Run Code Online (Sandbox Code Playgroud)

来自预提交脚本,但没有效果。该文件最终未提交并标记为已修改或暂存但从未提交。

有什么办法可以使这项工作?基本上,我希望它在每次提交时更新和提交文件“元数据”(最好是相同的提交,因此我可以在结帐后恢复所有权限)

谢谢!

PS如果您想知道为什么我需要这个,答案是我为需要权限/suid标志等的嵌入式设备存储操作系统文件。

dim*_*ike 1

我已经找到了解决方案。问题是,当从预提交挂钩文件修改是唯一修改的文件时 - 提交不会发生。在测试时,我只在“元数据”文件中进行更改,这就是为什么它对我不起作用。

一旦我修改了存储库中的其他一些文件,添加 add/rm 新文件 - 元数据文件已正确提交!

底线:为了从预提交挂钩提交修改后的文件,git 需要一些其他分阶段的更改,否则提交不会发生(可能 git 错误地检测到没有任何可提交的内容)。

这对我来说似乎有点出乎意料。我在 git 1.8 和 git 2.0 中测试了这一点,行为是相同的。