eck*_*kes 7 git hook pre-commit
对于修改分阶段文件的预提交钩子,我需要弄清楚钩子运行后必须暂存的内容.
预提交钩子对应该提交的文件应用一些漂亮的打印.钩子执行以下任务:
标有*)的操作是导致下述问题的操作.
完成这些操作后,钩子会将修改后的文件添加到索引中git add $filename
.这样,整个文件上演了,我不再只能提交修改后的文件的一小部分(即帅).
当然,我可以git add --no-verify
绕过钩子,但是当使用时,该选项不可用git gui
.此外,我希望在文件的分段行上应用漂亮的打印,所以绕过钩子不是我的目标.
有没有办法找出在应用漂亮打印后必须添加到索引中的内容,这样我可以在挂钩运行后播放正确的内容而不是暂存整个文件?
编辑1:
虽然David Brigada提供的答案看起来很有希望,但它不起作用:保持分阶段的变更完整(这是好的部分),但(至少在msysgit上)它将所有更改放入存储(不仅是未分级的)那些).当将存储重新弹回WC时,这会导致合并冲突,因为可能会修改分段行.git stash --keep-index
编辑2:David
的更新答案也没有成功,因为git拒绝将存储合并到脏WC中.
编辑3:来自larsks
的回答指出了我的用法.在第一眼看来,这似乎是正确的,但我发现签入的版本是通过过滤器运行并且WC与签入版本不同,这让我很困惑.至少,这是我的经验,并得到Git Book中以下评论的支持:.gitattributes
如果您提交这些更改并再次签出该文件,您会看到正确替换关键字
我必须删除该文件,然后再次检查以查看过滤器应用的更改?没门!还有什么提示吗?