我有一个 git 存储库,其中包含一个完整的用户上传文件的目录。该目录还包含一个 .gitignore */
。
我从远程仓库拉取了目录中的所有这些文件,并且没有警告就被删除了。
什么可能导致这种情况发生?
我所做的所有研究都告诉我,删除所有这些文件是一种蓄意的行为,不可能是偶然的。这是真的还是有另一个 git 命令会静默删除所有这些文件?
我有一个 git 存储库,其中包含一个完整的用户上传文件的目录。该目录还包含一个 .gitignore */
。
我从远程仓库拉取了目录中的所有这些文件,并且没有警告就被删除了。
什么可能导致这种情况发生?
我所做的所有研究都告诉我,删除所有这些文件是一种蓄意的行为,不可能是偶然的。这是真的还是有另一个 git 命令会静默删除所有这些文件?
.gitignore 是一种方便,可以防止噪音出现在状态报告中或被自动添加git add .
等等,仅此而已。您可以显式添加一个被忽略的文件,然后 git 无论如何都会关心那个特定的文件,并且在 .gitignore 中命名一个文件不会让 git 停止关心一个已经跟踪的文件。
如果git pull
删除了文件,则跟踪并删除这些文件。git checkout "@{may 21 17:30 pdt}"
您可以在拉取时为您签出的提交 取回它们或一些这样的参考。
很可能有人添加了文件,没有提交更改,并强制合并,使孤儿更难找到,但除非有人明确擦除 git 的内存git fsck --lost-found
,就像旧的取消删除程序一样,它会丢弃你所有的副本曾经在乎过却又被抛弃成.git/lost-found
。
git ls-files -ic --exclude-standard
将向您显示与忽略规范匹配的跟踪文件,即有人可能错误地添加或忽略的文件。想一想,对于预提交钩子来说,这可能不是一个坏行,
git ls-files -ic --exclude-standard \
| sed '${p;s,.*,*** '"$0"' refusing commit with tracked files marked as ignored in the standard excludes lists,;q1}'