如何让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用于生产和拉取
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文件夹。