6

可能重复:
GIT:忽略版本控制文件

Stackoverflow上有很多答案.gitignore,但我还没有找到答案:

我有一个现有的 git 项目,其中 areadme.md和 asample_folder/都在顶层。我确实想从我的 git(hub) 存储库中删除这些。但我想忽略它们,也就是说,在某个克隆的本地存储库中,即在部署机器上,完全阻止它们被拉取。

.gitignore我明白了,只是忽略未提交的文件?坦率地说,我没有发现任何隐藏(从拉+提交)已经提交东西......

在 Perforce 时代,我会简单地将其从各自的“客户端规范”(非常接近本地克隆的仓库)中排除:

//whatever/myProject
-//whatever/myProject/readme.md
-//whatever/myProject/sample_folder

当然,我可以选择第二个分支,我只需删除自述文件和整个示例文件夹。但是,我将不得不继续合并“开发”中的每一个微小修复。这是什么,我宁愿避免......我宁愿更喜欢本地“异常”而不是(跟踪)分支。

另外,我认为git rm --cached每当我提交时(这也可能不时发生在我的“部署回购”中)......

4

3 回答 3

5

也许我的问题错了,但是以下内容不能解决您的问题吗?

git rm --cached readme.md sample_folder/*
echo "readme.md" >>.gitignore
echo "sample_folder/*" >>.gitignore
git commit -am "Untracked some files"
于 2012-07-16T18:32:34.343 回答
2

听起来您可能正在使用 git checkout 作为部署方法。有时这行得通,有时它需要更多。如果存储库中有开发工件,则需要更多。

最明显的处理方法是使用部署脚本执行拉取操作,然后删除多余的目录和文件。不幸的是,这会给您留下一个可能会使人们感到困惑的部分存储库,并且它添加了一个必须记住使用并保持最新的特殊脚本。

处理它的另一种方法是拥有一个部署分支。创建一个分支,删除有问题的文件和目录,然后从该分支中​​提取。是的,您必须将开发分支中的更改合并到部署中。你认为这是一件苦差事,但它是一种保障。如果您在开发过程中快速创造机会并快速部署它们,那么您的部署周期可能会出现问题。

您希望在开发和部署之间有一个步骤,您可以在其中考虑和测试您的更改。如果不出意外,这可以防止开发人员 A 推动错误的更改,而管理员 B 通过在不知不觉中将其投入生产来加剧错误。您还希望能够推动开发并与其他开发人员共享您的工作,而不会冒险将其投入生产。

您现在可能是一个处理开发和部署的人,但以后可能不会。如果不出意外,这可以保护您自己不会意外地将不稳定的更改推向开发,然后在您有机会思考之前将其拉入部署,从而加剧该错误。

于 2012-07-16T18:20:10.773 回答
0

这不是关于 .gitignore 的问题。如果这些不是代码,您应该通过子模块在单独的 repo 中跟踪它,并且不要git submodule在服务器上运行任何 commandsh。或者只是在结帐后在部署机器上编写删除这些脚本。

于 2012-07-16T18:08:54.440 回答