git hook批量取消显示路径中的所有文件
我有一个git hook批量取消显示路径中的所有文件,git,hook,pre-commit-hook,unstage,Git,Hook,Pre Commit Hook,Unstage,我有一个devlog文件夹,在那里我写下我的想法/示例代码,我希望通过git状态查看这些代码。排除这些文件后,我通常只需git添加即可。;git commit,但显然,devlog中的内容禁止这样做。我希望有一个git钩子,它可以在提交之前取消显示整个路径及其内容 我试过: git-rm——缓存的devlog/* 但显然,它希望/devlog的所有内容都已经被转移(包括那些被.gitignore忽略的内容),因此抛出一个错误: git rm --cached devlog/* #> fa
devlog
文件夹,在那里我写下我的想法/示例代码,我希望通过git状态查看这些代码。排除这些文件后,我通常只需git添加即可。;git commit
,但显然,devlog
中的内容禁止这样做。我希望有一个git钩子,它可以在提交之前取消显示整个路径及其内容
我试过:
git-rm——缓存的devlog/*
但显然,它希望/devlog
的所有内容都已经被转移(包括那些被.gitignore
忽略的内容),因此抛出一个错误:
git rm --cached devlog/*
#> fatal: pathspec 'devlog/check.log' did not match any files
其中,devlog/check.log
被忽略,并且根本没有被暂存。您可以:
- 首先强制添加
检查.log
- 然后
git rm--缓存所有内容
由于check.log
被忽略(列在.gitignore
中),它将在git rm--cached
之后自动(再次)被忽略
因此:
git add--force devlog/check.log
git rm—缓存的devlog/*
这里有一个似乎有效的解决方案。只需将以下内容添加到.git/hooks/pre-commit
:
git reset -- devlog/*
谢谢这个解决方案的主要问题是每次更新钩子时都必须更新钩子。gitignore@AlJAbadi为什么要多次更新钩子?只要一次就够了。我不确定我是否正确理解了你的建议。我假设,例如,如果我的.gitignore中有***.pdf
,有一天,我开始在/devlog
中有一个pdf文件(或者我更新了.gitignore以忽略某些文件类型),我还必须在钩子中添加--force
。如果我错了,请澄清。@AlJAbadi这是为了修改钩子的源代码。但是你的解决方案更简单,而且更高级。我相信你的意思是.git/hooks/pre-commit
(除非你自定义了默认路径)@Anthony是的,我刚刚修复了它。谢谢你的来信。