所以这就是发生的事情。我正在开发一个小型软件开发项目,并且有一个在 VS Code 中使用的 git 存储库。到目前为止,一切都很好。 我最近对项目进行了一些重组,并有一些文件,其中包含不再需要的代码,但我想保留以供参考,以备将来需要它们。我将它们放在一个名为
dev_int
的文件夹中,并在我的 .gitignore
文件中添加了一行,以确保这些用于内部开发的文件不会被发布。
dev_int/*
我知道这可能不是最好的方法,但它似乎有效,并且是实现我所需的简单方法。
现在我的
dev_int
文件夹及其所有内容都消失了。这是预期的行为吗?我应该如何去做这件事?
我正在 ubuntu 22.04、git 版本 2.34.1 上工作,并且如上所述通过 VS code 完成所有这些工作。
我应该如何去做这件事?
您应该将这些文件存储在项目文件夹的外部,不受 Git 的控制。项目文件夹(也称为工作树)的可见内容属于 Git,而不属于您。这些不是您的文件。事实上,项目文件夹的可见内容有点像 Git 创建的幻觉(或者也许我应该说是投影)。
当您将一个文件夹变成 Git 存储库(通过说git clone
或通过说
git init
)时,从那时起,该文件夹就处于 Git 的控制之下。真正的存储库位于项目文件夹顶层不可见的.git 文件夹中;这就是构成存储库的提交所在的位置。每次提交都是所有项目文件的快照;但在正常情况下,你看不到它们。但与此同时,Git 从存储库中复制了一些文件并将它们放入工作树中,以便您可以编辑它们、将它们添加到索引中并创建新的提交。它根据您从存储库(HEAD)签出的提交(通常是分支)来执行此操作。这样,当您创建新提交时,Git 可以将其作为当前签出的提交的子级(并将 HEAD 移动到指向此新提交)。 Git 在这方面非常灵活。当您从一个分支切换到另一个分支时,Git 会有效地从工作树中删除所有内容,并用一组全新的副本替换它,反映您刚刚切换到的分支。 因此,您必须
预期
工作树的内容会出现和消失。这就是工作树。因此,如果您有一些文件不属于 Git 控制下的项目,那么放置它们的安全位置是外部工作树 - 项目文件夹之外。