让我们说我的回购看起来像这样:
myApp
public
index.html
...
tests
foo.js
...
我想将tests
文件夹推送到GitHub而不是我的服务器。我该如何做到这一点?
由于我希望tests/
被推送到GitHub,我不能简单地将/tests/*
添加到我的.gitignore文件中。
我已尝试将/tests/
添加到我服务器上的.git/info/exclude
文件中,然后删除/tests
的内容,但这不起作用。
答案 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会有好处。首先,如果有任何热补丁,那将是显而易见的。但是你需要一个发布过程。
当你准备好发布......
git checkout release
git merge --no-commit devel