如何使用Git跟踪目录但不跟踪其中的文件?

15 浏览
0 Comments

如何使用Git跟踪目录但不跟踪其中的文件?

我最近开始使用Git,只有一个问题让我困扰。如何在不追踪其内容的情况下追踪目录?\n例如,我正在开发的网站允许上传文件。我想追踪上传目录,以便在分支等操作时创建该目录,但显然不追踪其中的文件(开发分支中的测试文件或主分支中的真实文件)。\n在我的.gitignore文件中,我有以下内容:\n

uploads/*.*

\n我还尝试过以下内容(忽略整个目录):\n

uploads/

\n这个目录可能还包含子目录(uploads/thumbs/ uploads/videos/),我希望能够追踪这些子目录,但不追踪它们的文件。\nGit是否支持这种操作?我已经到处搜索,但没有找到答案。

0
0 Comments

问题的出现的原因是,Git默认只会追踪并提交文件,而不会追踪和提交空目录。这对于希望保留目录结构的项目来说可能是一个问题。

解决方法是在目录中添加一个名为.gitignore的文件,并将其作为占位符文件。可以在.gitignore中添加一行代码来确保目录被追踪,而不是被忽略。常见的命名约定是使用.gitkeep作为占位符文件。

这个问题的解决方法在这里有一个很好的文章和评论,通过写一篇文章并获得评论,作者学到了一些东西。另外,某些情况下了使用.gitkeep作为占位符文件的命名约定,并表示对此感到非常满意。

总结一下,要在Git中追踪目录但不追踪文件,可以通过在目录中添加一个.gitignore文件,并使用.gitkeep作为占位符文件来实现。

0
0 Comments

如何使用Git跟踪目录而不是它们的文件?

问题的原因:

在Git中,默认情况下,无法直接将空目录添加到版本控制中。只有当目录中存在文件时,Git才会跟踪该目录。这可能会导致问题,因为有时我们希望跟踪一个目录的结构,而不仅仅是它的文件。

解决方法:

其中一种解决方法是在要跟踪的目录中包含一个名为`.gitignore`的文件,并在该文件中指定以下内容:

# 忽略此目录中的所有内容

*

# 除了这个文件

!.gitignore

这样,通过在目录中添加`.gitignore`文件,Git将跟踪该目录的结构,而不会跟踪其中的文件。

如果您希望了解如何将空目录添加到Git存储库中,可以参考以下链接:https://stackoverflow.com/questions/115983

0
0 Comments

在使用Git进行版本控制时,Git并不直接跟踪目录,而是跟踪文件。因此,要实现跟踪目录但不跟踪其文件,需要跟踪至少一个文件。假设你的.gitignore文件类似于这样:

upload/*

你可以执行以下操作:

$ touch upload/.placeholder
$ git add -f upload/.placeholder

如果忘记使用-f选项,你会看到如下提示:

$ git add upload/.placeholder

The following paths are ignored by one of your .gitignore files:

upload

Use -f if you really want to add them.

fatal: no files added

然后,当你执行git status命令时,你会看到如下输出:

# On branch master

#

# Initial commit

#

# Changes to be committed:

# (use "git rm --cached ..." to unstage)

#

# new file: upload/.placeholder

#

显然,你可以继续执行以下操作:

$ touch upload/images/.placeholder
$ git add -f upload/images/.placeholder

一个常见的惯例是使用.gitignore文件作为占位符。因此,你可以将.gitignore文件作为占位符文件。对于Abizern的评论,我确实没有考虑过使用.gitignore文件作为占位符。抱歉,不知怎么错过了那些评论。

“Git doesn't track directories, it tracks files”这句话听起来很有趣,因为在UNIX中,一切都是文件,甚至目录也是文件。

0