Stackoverflow上.gitignore
附近有很多答案,但我还没找到答案:
我有一个现有的git项目,其中readme.md
和sample_folder/
都位于顶层。我确实想从我的git(hub)存储库中删除它们。但是我想忽略它们,即在某个克隆的本地存储库中,即在部署机器上阻止它们被拉动。
.gitignore
我明白,只是忽略非提交的文件?坦率地说,我没有找到任何隐藏(来自提取+提交)已经 承诺的东西......
在Perforce的时代,我会简单地将其排除在相应的客户规范之外。 (这与当地克隆的回购非常接近):
//whatever/myProject
-//whatever/myProject/readme.md
-//whatever/myProject/sample_folder
当然,我可以选择第二个分支,我只需删除自述文件和整个示例文件夹。但是,我必须继续合并来自“开发”的每一个小修复。这是什么,我宁愿避免...我宁愿选择本地的例外情况'在(跟踪)分支上。
此外,每当我提交时,我都会git rm --cached
提交(这可能会在我的部署回购中发生,然后也会发生...)
答案 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
命令。或者只是在结账后在部署机上删除这些文件。