2010-02-07 61 views
6

我使用git作为我的主要版本控制系统,并且最近开始在我的CakePHP项目中使用git。这是我目前的.gitignore文件:在您的CakePHP项目中使用Git

app/tmp 
vendors/ 

正如CakePHP的git仓库使用,但是这将导致更多的工作对我来说部署项目到服务器的时候,因为我必须去创造一切app/tmp /子目录,然后才能正常工作。有没有办法将它设置为忽略这些文件夹中的内容,但是仍然将它们置于git控制之下,以便在将repo克隆到hoted目录中时出现它们?

我也一直有一个问题,当我正在处理它时,我的git索引被重置,这导致我必须做比应有的更多的提交,对此也有任何想法?

+0

你能解释一下关于git索引问题的更多信息吗?哪些步骤会重现该问题? – 2010-02-07 20:02:38

+0

您可能想要从http://stackoverflow.com/questions/115983/how-do-i-add-an-empty-directory-to-a-git-repository获得有关如何添加目录但忽略其内容的答案。 – 2010-02-07 21:04:42

+0

我不确定导致问题的活动,但似乎是随机地将索引中的所有文件都显示为已删除,然后我必须将所有文件重新添加到索引。 – trobrock 2010-02-07 22:53:10

回答

11

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

  1. 删除应用程序的/ tmp /从的.gitignore
  2. 触摸应用程序的/ tmp/.keep
  3. git的添加应用程序的/ tmp/.keep
  4. git的承诺
  5. 添加应用程序的/ tmp /对。 gitignore
+0

好吧,那是我以前做的事,我只是不记得该怎么做。 – trobrock 2010-02-07 22:52:22

4

正如前面提到的git只存储文件,而不是目录。默认情况下,cake的.gitignore文件会忽略tmp文件夹中的所有内容,以防止将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 

如果你会注意到我有!空,这使我无法创建.keep文件,所有这些文件都是SVN以前的版本。最后,您还会看到,我将这个配置用于[Cc]记录的cakePHP 1.x和2.x项目。我有一些文件夹设置,我存储用户文件,所以我总是忽略它们。最后,.DS_Store忽略我的MAC为我的项目创建的缩略图视图。

+0

是什么意思!空的意思是? – dynamic 2015-05-04 07:59:41