Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将没有文件的目录结构(包含子目录的目录)提交到git?_Git_Github_Gitignore - Fatal编程技术网

如何将没有文件的目录结构(包含子目录的目录)提交到git?

如何将没有文件的目录结构(包含子目录的目录)提交到git?,git,github,gitignore,Git,Github,Gitignore,我正在尝试将以下目录结构提交给git: web /uploads /avatars /video 我将.gitkeep放入/web/uploads/avatars/和/web/uploads/video/中,并在repo根目录中的.gitignore中添加了以下行: /web/uploads/ !/web/uploads/avatars/.gitkeep !/web/uploads/video/.gitkeep 但是git status

我正在尝试将以下目录结构提交给git:

web
    /uploads
            /avatars
            /video
我将
.gitkeep
放入
/web/uploads/avatars/
/web/uploads/video/
中,并在repo根目录中的
.gitignore
中添加了以下行:

/web/uploads/
!/web/uploads/avatars/.gitkeep
!/web/uploads/video/.gitkeep
但是
git status
不显示任何新文件。调用git add web/uploads/avatars/.gitceep输出以下消息:

The following paths are ignored by one of your .gitignore files:
web/uploads/avatars/.gitkeep
Use -f if you really want to add them.
fatal: no files added
如何将空目录结构提交到git存储库中?
P.S.git版本是git版本1.8.4.msysgit.0

您的

.gitignore
文件忽略目录
/web/uploads
本身,因此其子目录和文件将被自动忽略,而不考虑以下否定模式

如果要添加
/web/uploads/
但忽略其中的文件,则
.gitinore
可以如下所示:

/web/uploads/*
# Next line tell git to add subdirectories back
!/web/uploads/**/
!/web/uploads/avatars/.gitkeep
!/web/uploads/video/.gitkeep

或者,如果您只想添加目录,无论是否有文件,那么您不需要触摸
.gitignore
,只需添加
.gitkeep
文件,一切都会正常工作。

如果您排除某个目录,则该目录下的所有内容都将始终被排除,即使您稍后在该目录下放置了unignore内容。要取消对某些文件或目录的清除,您必须取消对要清除的任何内容的每个父目录的清除。因此,您的.gitconfig必须是

!web/uploads/

web/uploads/*
!web/uploads/avatars/
!web/uploads/video/

web/uploads/avatars/*
web/uploads/video/*

!web/uploads/*/.gitkeep

但是你应该记住.gitkeep不是一个git特性,它只是一个协议,只是一个隐藏文件,因此名称可以是任意的。如果你忽略一个目录,git不会检查它的子目录和文件

所以,git不检查以下行

!/web/uploads/avatars/.gitkeep
!/web/uploads/video/.gitkeep
如果希望git检查子目录和文件,请使用星号并忽略所有文件(而不是目录)

例如:

/web/uploads/*/*
这是(因为您希望最低级别的目录为空,然后问题只会浮到下一个级别)的副本(或者,可能是的)。