如何忽略git中现有的,已提交的文件?

时间:2012-07-16 16:23:29

标签: git github gitignore smartgit

  

可能重复:
  GIT: Ignoring Version-Controlled Files

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

我有一个现有的git项目,其中readme.mdsample_folder/都位于顶层。我确实想从我的git(hub)存储库中删除它们。但是我想忽略它们,即在某个克隆的本地存储库中,即在部署机器上阻止它们被拉动。

.gitignore我明白,只是忽略非提交的文件?坦率地说,我没有找到任何隐藏(来自提取+提交)已经 承诺的东西......

在Perforce的时代,我会简单地将其排除在相应的客户规范之外。 (这与当地克隆的回购非常接近):

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

当然,我可以选择第二个分支,我只需删除自述文件和整个示例文件夹。但是,我必须继续合并来自“开发”的每一个小修复。这是什么,我宁愿避免...我宁愿选择本地的例外情况'在(跟踪)分支上。

此外,每当我提交时,我都会git rm --cached提交(这可能会在我的部署回购中发生,然后也会发生...)

3 个答案:

答案 0 :(得分:5)

也许我的问题出错了,但是下面的问题不会解决你的问题吗?

git rm --cached readme.md sample_folder/*
echo "readme.md" >>.gitignore
echo "sample_folder/*" >>.gitignore
git commit -am "Untracked some files"

答案 1 :(得分:2)

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

处理此问题最明显的方法是使用部署脚本执行提取,然后删除多余的目录和文件。遗憾的是,这会给您留下一个可能会让人感到困惑的部分存储库,它会添加一个特殊的脚本,必须记住要使用并保持最新。

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

您需要在开发和部署之间进行一步,您可以在其中考虑并测试您的更改。如果没有别的,这可以防止开发人员A推动一个糟糕的变化,并且管理员B通过不知不觉地将其推入生产中来弥补错误。您还希望能够推动开发并与其他开发人员分享您的工作,而不会冒着将其投入生产的风险。

您现在可能是处理开发和部署的单个人,但您可能不会迟到。如果不出意外,这可以保护自己不会意外地将不稳定的变化推向开发,然后在你有机会思考之前将其置于部署中来加剧这种错误。

答案 2 :(得分:0)

这不是关于.gitignore的问题。如果这些是 not 代码,则应通过子模块在单独的repo中跟踪它,并且不要在服务器上运行任何git submodule命令。或者只是在结账后在部署机上删除这些文件。