我在项目的根目录中有数据目录。它有图像目录和一些文件。这是一个例子:
在gitignore中写什么,忽略数据/目录中的文件(即results.csv和r.txt)和images /目录中的文件(image.jpg,image2.jpg,image3.jpg)?
当我提交它时,存储库中的文件夹结构应为:
所以,我只想要提交空文件夹结构。
答案 0 :(得分:105)
只需在要提交的每个文件夹中添加文件.gitkeep
。
在Windows上通过在文件夹中右键单击并选择:Git bash从此处执行此操作。然后输入:touch .gitkeep
答案 1 :(得分:80)
在Git中,你不能提交空文件夹,因为Git实际上并不保存文件夹,只保存文件。如果你真的希望它们是“空的”(即你没有可提交的内容),你必须在这些目录中创建一些占位符文件。
答案 2 :(得分:47)
这很容易。
告诉.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
,但该部分可以忽略。 :)
答案 3 :(得分:30)
递归创建.gitkeep文件
find . -type d -empty -not -path "./.git/*" -exec touch {}/.gitkeep \;
答案 4 :(得分:7)
传统上,每当我想要提交并清空目录结构时,我都会创建结构,然后在叶子目录中放置一个名为empty.txt
的空文件。
然后当我把东西准备好提交时,我可以简单地删除empty.txt
文件并提交真实文件。
即
答案 5 :(得分:4)
如果在构建期间目录需要存在,请考虑在Makefile中执行mkdir -p data/images
。
如果这还不够好,只需在数据/图像中创建一个空文件并忽略数据。
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"
答案 6 :(得分:3)
您可以使用git commit --allow-empty
进行空提交,但这不允许您提交空文件夹结构,因为git不知道或不关心文件夹作为对象本身 - 只是它们包含的文件。
答案 7 :(得分:1)
根据他们的常见问题解答,GIT不会跟踪空目录。
但是,根据您的需求和项目要求,有一些解决方法。
基本上,如果要跟踪空目录,可以在其中放置.gitkeep
文件。该文件可以为空白,只会有效。这是跟踪空目录的Gits方式。
另一种选择是提供目录的文档。您可以在其中添加一个描述其预期用途的自述文件。 Git将跟踪该文件夹,因为它中包含一个文件,您现在已经向您和/或其他任何可能使用源代码的人提供了文档。
如果您正在构建一个Web应用程序,您可能会发现只添加一个index.html文件很有用,如果该文件夹只能通过该应用程序访问,则该文件可能包含权限被拒绝的消息。 Codeigniter对所有目录都这样做。
答案 8 :(得分:1)
只需在images文件夹中添加名为.keep的文件。您现在可以暂存和提交,也可以将文件夹添加到版本控制中。
在images文件夹中创建一个空文件
4.2.1
$ touch .keep
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 status
$ git add .