1

我正在开发一个phpWeb 应用程序,我需要一个名为“library”的目录始终不受git.

原因是该目录用于存储用户可能从我的php应用程序中上传到服务器的其他文件和文件夹。因此,它包含我本地计算机上的项目和我正在使用的登台服务器上的不同项目,它们永远不应该被删除。

我明白我可以。gitignore“库”目录,但我正在阅读有关 git 可能gitignored在某些时候删除项目的警告。

有没有明确保护目录或文件的方法?

4

2 回答 2

2

Git 只会删除一个目录——或与此相关的文件——如果它们在某个时候实际上是存储库的一部分。如果您的任何分支都不包含这些文件,那么 Git 根本不会触及它们。即使是这样;没有数据丢失。

要理解这一点,我们需要了解在 Git 中结帐时会发生什么。假设我们在分支 A 并且想要检查分支 B。Git 所做的就是删除分支 A 中包含的所有文件并且是干净的(即它们没有任何未提交的更改)。接下来,Git 将从分支 B 创建所有文件。现在,如果分支 A 跟踪了一个文件,但分支 B 没有,那么这将导致该文件在结帐时被删除。这同样适用于目录(因为 Git 只跟踪文件,并且根据需要创建/删除目录)。但是当我们切换回分支 A 时,文件又被恢复了。

所以总结一下;只有当一个文件是 Git 存储库的一部分并且新的检出目标不包含该文件时,它才会被删除。否则,它会留在原处(因为 Git 甚至都不知道它)。

因此,如果您只是不希望在 Git 中跟踪该目录中的任何文件,请将其添加到存储库中,.gitignore并且不要手动将其添加到存储库中。

于 2013-09-28T23:19:33.587 回答
0

您可以向目录中添加一个.gitkeep文件,该文件library将告诉 git 将该目录保留在版本控制中。只是不要向library特定于环境的文件提交任何文件。

.gitignore 和 .gitkeep 有什么区别?

于 2013-09-28T22:45:12.737 回答