如何让 git 忽略我服务器上的目录?
How to get git to ignore directory on my server?
假设我的回购看起来像这样:
myApp
public
index.html
...
tests
foo.js
...
我希望 tests
文件夹被推送到 GitHub 而不是我的服务器。我该如何实现?
因为我希望 tests/
被推送到 GitHub,所以我不能简单地将 /tests/*
添加到我的 .gitignore 文件中。
我试过将 /tests/
添加到我服务器上的 .git/info/exclude
文件,然后删除 /tests
的内容,但这没有用。
.gitignore
和 .git/info/exclude
不忽略更改。他们只说要考虑未跟踪的内容。一旦文件被跟踪,它们就没有任何作用。
听起来您正在使用 Git 作为发布工具,并且 运行 成为众多问题之一。版本控制是一个糟糕的发布工具。我建议改为使用 release/packaging 系统。
在生产环境中使用 git 结帐会有好处。首先,如果有任何东西是热补丁的,那将是显而易见的。但是你需要一个发布过程。
- 从你的开发分支创建一个发布分支。
- 删除发布分支中的测试目录。
- 检查生产服务器上的发布分支。
当您准备好发布时...
git checkout release
git merge --no-commit devel
- 如果合并重新添加了测试目录,则丢弃它。
- 提交合并。
- ssh 到生产环境并拉取。
正如 Schwern 所说,如果您实际上仍想使用 git 发布,最好的选择是为发布创建另一个分支。步骤可以是:
在您的机器中:
A-->B-->C-->D -development
\ \
`->v1---`->v2 -releases
创建发布分支
git branch releases
git checkout releases
然后您可以删除 releases 分支 中的 test 文件夹
git rm myApp/test
git commit
并与开发分支合并,不带文件夹:
git merge --no-commit development
然后你可以将整个项目推送到GitHub。然后在服务器中你可以这样做:
git pull origin releases
为了只获得 releases 分支 所以你将在你的服务器中有这个结构。
->v1----->v2 -releases
假设我的回购看起来像这样:
myApp
public
index.html
...
tests
foo.js
...
我希望 tests
文件夹被推送到 GitHub 而不是我的服务器。我该如何实现?
因为我希望 tests/
被推送到 GitHub,所以我不能简单地将 /tests/*
添加到我的 .gitignore 文件中。
我试过将 /tests/
添加到我服务器上的 .git/info/exclude
文件,然后删除 /tests
的内容,但这没有用。
.gitignore
和 .git/info/exclude
不忽略更改。他们只说要考虑未跟踪的内容。一旦文件被跟踪,它们就没有任何作用。
听起来您正在使用 Git 作为发布工具,并且 运行 成为众多问题之一。版本控制是一个糟糕的发布工具。我建议改为使用 release/packaging 系统。
在生产环境中使用 git 结帐会有好处。首先,如果有任何东西是热补丁的,那将是显而易见的。但是你需要一个发布过程。
- 从你的开发分支创建一个发布分支。
- 删除发布分支中的测试目录。
- 检查生产服务器上的发布分支。
当您准备好发布时...
git checkout release
git merge --no-commit devel
- 如果合并重新添加了测试目录,则丢弃它。
- 提交合并。
- ssh 到生产环境并拉取。
正如 Schwern 所说,如果您实际上仍想使用 git 发布,最好的选择是为发布创建另一个分支。步骤可以是:
在您的机器中:
A-->B-->C-->D -development
\ \
`->v1---`->v2 -releases
创建发布分支
git branch releases
git checkout releases
然后您可以删除 releases 分支 中的 test 文件夹
git rm myApp/test
git commit
并与开发分支合并,不带文件夹:
git merge --no-commit development
然后你可以将整个项目推送到GitHub。然后在服务器中你可以这样做:
git pull origin releases
为了只获得 releases 分支 所以你将在你的服务器中有这个结构。
->v1----->v2 -releases