我使用这个pre-hook脚本是因为我运行了一个编辑一些类的任务,然后我会自动添加所有编辑过的文件并提交它们,但结果是提交完成了,然后文件被添加但没有提交。它们似乎是在提交之后而不是之前添加的。脚本是这样的:
#!/bin/bash pwd cd application echo "Running Lint and Spotless" bash gradlew lint spotlessApply git add *
我怎么能这么做呢?
okxuctiv1#
git-add(1)更改索引。你不应该在预提交脚本中改变索引。它可能工作,但它是未定义的行为。See:仅供参考,我们尽量不做额外的重读,因为预提交钩子被设计成一种机制,允许用户验证,但不是正确的,什么被提交。由于系统最初的设计,正确使用Git的用户不会修改索引。因为修改钩子中的索引是错误的,所以(1)在用户犯了这样的错误的情况下重新读取索引是浪费资源,并且(2)检查索引以确保它在调用钩子之前和之后没有改变,同样也是浪费资源。在某些情况下,我们重新阅读索引可能是一个错误,这增加了混乱,但不是其他人。
1条答案
按热度按时间okxuctiv1#
git-add(1)更改索引。你不应该在预提交脚本中改变索引。它可能工作,但它是未定义的行为。
See:
仅供参考,我们尽量不做额外的重读,因为预提交钩子被设计成一种机制,允许用户验证,但不是正确的,什么被提交。由于系统最初的设计,正确使用Git的用户不会修改索引。因为修改钩子中的索引是错误的,所以(1)在用户犯了这样的错误的情况下重新读取索引是浪费资源,并且(2)检查索引以确保它在调用钩子之前和之后没有改变,同样也是浪费资源。
在某些情况下,我们重新阅读索引可能是一个错误,这增加了混乱,但不是其他人。