我在项目的根数据目录。 它具有图像目录和一些文件。 下面是例子:
- 数据/
- 图片/
- image1.jpg
- image2.jpg
- image2.jpg
- results.csv
- r.txt
如何才能在gitignore写,忽略从数据/目录中的文件(即results.csv和r.txt)和images /目录下的文件(image.jpg的,image2.jpg,image3.jpg)?
当我提交它,在库中的文件夹结构应该是:
所以,我只想被COMMITED空文件夹结构。
在Git中,你不能犯空文件夹,因为Git不会实际保存文件夹中的文件。 你必须创建这些目录里面的一些占位符文件,如果你真的想他们是“空”(即你没有可提交的内容)。
只需添加一个文件.gitkeep
你想致力于每一个文件夹中。
在Windows文件夹中时,通过右击做,并选择:从这里的Git的bash。 然后键入: 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
中,但该部分可以忽略不计了吧。 :)
递归创建.gitkeep文件
find . -type d -empty -not -path "./.git/*" -exec touch {}/.gitkeep \;
传统上,每当我想提交和空目录结构,创建结构,然后在叶目录地方叫一个空文件empty.txt
。
然后,当我把东西在那准备提交,我可以简单地删除empty.txt
文件并提交真实的文件。
即
考虑也只是在做mkdir -p data/images
在你的Makefile,如果目录需要构建过程中在那里。
如果这还不够好,刚刚创建的数据/图像的空文件,而忽略数据。
touch data/images/.gitignore
git add data/images/.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并不知道也不关心文件夹,对象本身-只是它们所包含的文件。
根据他们的常见问题,GIT不跟踪空目录。
Git的常见问题解答
不过,也有根据您的需求和项目需求的解决方法。
基本上,如果你想跟踪一个空目录,你可以放置一个.gitkeep
文件在那里。 该文件可以是空白,这将只是工作。 这是跟踪一个空目录的控释片的方式。
另一种选择是对目录提供的文档。 你只需在它描述它的预期使用添加自述文件。 Git会跟踪文件夹,因为它有它一个文件,现在你可能会使用的源代码提供文档,您和/或其他任何人。
如果你正在建设一个web应用程序,你可能会发现只需添加可能含有否认消息的许可index.html文件,如果文件夹仅通过应用程序进行访问。 笨这是否与他们的所有目录。
只需添加名为.keep在图像现在folder.you可以暂存并提交,也能够文件夹添加到版本控制文件。
创建图片文件夹中的空文件$ touch .keep
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Untracked files:
(use "git add ..." to include in what will be committed)
images/
nothing added to commit but untracked files present (use "git add" to track)
$ git add .
$ git commit -m "adding empty folder"