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

如何让git忽略我服务器上的目录?,git,github,gitignore,Git,Github,Gitignore,假设我的回购协议是这样的: myApp 公众的 index.html ... 测验 foo.js ... 我希望tests文件夹被推送到GitHub,而不是我的服务器。我如何做到这一点 由于我希望tests/被推送到GitHub,我不能简单地将/tests/*添加到我的.gitignore文件中 我尝试将/tests/添加到服务器上的.git/info/exclude文件中,然后删除/tests的内容,但没有成功。.gitignore和.git/info/exclude不要忽略更改。他们只说不

假设我的回购协议是这样的:

myApp
公众的
index.html
...
测验
foo.js
...

我希望
tests
文件夹被推送到GitHub,而不是我的服务器。我如何做到这一点

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


我尝试将
/tests/
添加到服务器上的
.git/info/exclude
文件中,然后删除
/tests
的内容,但没有成功。

.gitignore
.git/info/exclude
不要忽略更改。他们只说不考虑的事情。一旦文件被跟踪,它们就没有任何效果

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

在生产中使用git签出可能有好处。首先,如果有什么是热补丁的话,这是显而易见的。但你需要一个发布过程

  • 从开发分支中创建一个发布分支
  • 删除发布分支中的测试目录
  • 签出生产服务器上的发布分支
当你准备好释放

  • git签出版本
  • git合并--无提交开发
  • 如果合并已读取测试目录,则放弃该目录
  • 提交合并
  • ssh用于生产和拉取
如前所述,如果您实际上仍然希望在发布中使用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

“我的服务器”是什么意思?是另一个遥控器吗?您是否将Git用作发布工具?是的。为了更新我的应用程序,我将ssh连接到我的服务器,然后“git-pull-originmaster”。我希望服务器上的git在我拉时忽略tests文件夹。