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是的,我刚刚修复了它。谢谢你的来信。