如何让git忽略我服务器上的目录?

时间:2015-01-29 03:11:47

标签: git github gitignore

让我们说我的回购看起来像这样:

myApp public index.html ... tests foo.js ...

我想将tests文件夹推送到GitHub而不是我的服务器。我该如何做到这一点?

由于我希望tests/被推送到GitHub,我不能简单地将/tests/*添加到我的.gitignore文件中。

我已尝试将/tests/添加到我服务器上的.git/info/exclude文件中,然后删除/tests的内容,但这不起作用。

2 个答案:

答案 0 :(得分:2)

正如Schwern所说,如果你真的还想使用git进行发布,那么最好的选择就是为发布版制作另一个分支。步骤可以是:

在你的机器上:

A-->B-->C-->D          -development
    \       \
     `->v1---`->v2     -releases

创建发布分支

git branch releases
git checkout releases

然后,您可以删除发布分支

中的测试文件夹
git rm myApp/test
git commit

并将其与开发分支合并,不包含文件夹:

git merge --no-commit development

然后你可以将整个项目推送到GitHub。然后在服务器中执行:

git pull origin releases

为了只获得发布分支,您将在服务器中拥有此结构。

->v1----->v2      -releases

答案 1 :(得分:0)

.gitignore.git/info/exclude不会忽略更改。他们只说未考虑的内容。跟踪文件后,它们无效。

听起来你正在使用Git作为发布工具,并遇到了许多问题之一。版本控制是一种糟糕的发布工具。我建议改为使用发布/包装系统。

在生产中使用git checkout会有好处。首先,如果有任何热补丁,那将是显而易见的。但是你需要一个发布过程。

  • 从您的开发分支机构创建一个发布分支。
  • 删除发布分支中的tests目录。
  • 检查生产服务器上的发布分支。

当你准备好发布......

  • git checkout release
  • git merge --no-commit devel
  • 如果已通过合并读取了测试目录,则将其丢弃。
  • 提交合并。
  • ssh to production and pull。