为什么git删除我的脚本文件夹?

时间:2014-01-27 22:54:04

标签: git gitignore

我刚刚将.gitignore文件更新为不包含节点和bower模块文件。

node_modules/
.tmp
.sass-cache
sample/bower_components/
sample/node_modules/
sample/images/

但是当我运行git clean -f时,我的终端回复了

Removing sample/scripts

当然,sample/scripts是我想要保留在项目中的文件夹,我还没有在.gitignore中指定它,为什么要删除它?

2 个答案:

答案 0 :(得分:4)

git clean将删除Git不知道的文件。如果您未传递-x标记,则会删除未跟踪且未明确忽略的文件。

因此,如果删除了sample/scripts,那么Git显然没有跟踪它。如果您想保留它,则必须通过添加和提交来跟踪它,或者将其添加到.gitignore

顺便说一下。最好先运行git clean -n以查看Git在实际执行此操作之前会删除的内容。

答案 1 :(得分:0)

我假设您没有将sample/scripts目录中的任何文件添加到Git存储库。这意味着它们不会被跟踪,并且会从git-clean手册中删除它们:Cleans the working tree by recursively removing files that are not under version control, starting from the current directory.

您可以使用以下命令检查本地存储库正在跟踪哪些文件:

git ls-tree --full-tree -r HEAD

如果缺少文件,只需添加它们:

git add sample/scripts/.
git commit -m "Add missing sample scripts"
git clean -f

Git只跟踪文件,因此空白目录不计算在内。您可以添加基本.gitignore来解决此问题:

touch sample/scripts/.gitignore
git add sample/scripts/.gitignore
git commit -m "Add sample scripts gitignore"
git clean -f