以下是目录结构:
Top_dir
--test_file
现在,当我执行 git rm test_file 时,由于 Top_dir 没有任何其他文件,git 也会删除 Top_dir。这是 git 的正常行为吗?
答案1
是的。Git 并不完全使用文件系统。它使用“blobs”。有一篇文章叫做从底层开始这篇文章相当简短,强烈推荐。以下是相关片段:
Git blob 与文件系统文件之间的区别在于,blob 不存储有关其内容的元数据。所有此类信息都保存在保存 blob 的树中。一棵树可能知道这些内容是 2004 年 8 月创建的名为“foo”的文件,而另一棵树可能知道相同的内容是五年后创建的名为“bar”的文件。在普通的文件系统中,两个内容相同但元数据不同的文件始终会表示为两个独立的文件。为什么会有这种差异?主要是因为文件系统设计为支持可更改的文件,而 Git 则不然。Git 存储库中的数据是不可变的,这一事实使得所有这些工作得以实现,因此需要不同的设计。事实证明,这种设计允许更紧凑的存储,因为所有具有相同内容的对象都可以共享,无论它们位于何处。
答案2
嗯,不太确定 git 是否会这样做。它会从当前工作树/索引和暂存区中删除文件。
http://gitref.org/basic/#rm-mv
https://www.kernel.org/pub/software/scm/git/docs/git-rm.html
如果您是 git 新手,我建议使用 gitk(它为 git 存储库提供了良好的用户界面)以使此操作更加容易。您可以从终端以 sudo 身份安装它。
希望有帮助!