使用Git管理你的CakePHP项目

6
我使用git作为我的主要版本控制系统,并最近开始在我的CakePHP项目中使用git。这是我的当前.gitignore文件:
app/tmp
vendors/

在cakephp git仓库中使用,但这会使我在部署项目到服务器时需要手动创建所有的app/tmp/子目录,才能正常工作。有没有一种方法可以设置忽略这些文件夹中的内容,但仍然让它们处于git控制下,这样当我将repo克隆到托管目录中时,它们就会出现?
我还遇到了一个问题,就是在我工作时我的git索引被重置了,这导致我不得不做更多的提交,你有什么想法吗?

你能详细解释一下你在使用Git索引时遇到的问题吗?哪些步骤会重现这个问题? - Esko Luontola
你可能想要从https://dev59.com/QnVD5IYBdhLWcg3wBWzd获取答案,关于如何添加目录但忽略它们的内容。 - Jakob Borg
我不确定是哪些活动导致了问题,但似乎所有索引文件都随机显示为已删除,然后我必须重新将所有文件添加到索引中。 - trobrock
3个回答

11

Git仅存储文件,而不是目录,因此您可以将隐藏文件添加到该目录并提交。

  1. 移除 .gitignore 文件中的 app/tmp/。
  2. 在 app/tmp/ 目录下创建 .keep 文件。
  3. 使用命令 git add app/tmp/.keep 添加 .keep 文件。
  4. 执行命令 git commit 提交更改。
  5. 将 app/tmp/ 添加到 .gitignore 文件中。

好的,是的,那是我以前做的事情,只是我记不得怎么做了。 - trobrock

4

如上所述,Git 仅存储文件,而不是目录。默认情况下,Cake 的 .gitignore 文件忽略 tmp 文件夹中的所有内容,以防止将临时文件添加到您的代码库中。

但是,在创建项目之后,您可以(也应该)这样做:

cd /my/app
git add -f tmp

这将会做到以下事情:
$ git status
# On branch master
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#   new file:   tmp/cache/models/empty
#   new file:   tmp/cache/persistent/empty
#   new file:   tmp/cache/views/empty
#   new file:   tmp/logs/empty
#   new file:   tmp/sessions/empty
#   new file:   tmp/tests/empty

因此,您的tmp文件夹结构已准备好提交,但是tmp目录中的所有其他文件将(继续)被忽略。

1

我的 .gitignore 文件。

tmp/*
[Cc]onfig/core.php
[Cc]onfig/database.php

webroot/files/
webroot/img/photos/

!empty
.DS_Store

如果您注意到,我使用了“!empty”,这样就不需要在各处创建“.keep”文件了,这种做法已经过时。最后您还会看到,我将此配置用于cakePHP 1.x和2.x项目,由[cc]标注。我设置了一些文件夹来存储用户文件,因此我总是忽略它们。最后,“.DS_Store”会忽略我在项目中创建的缩略图视图。

!empty 是什么意思? - dynamic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接