2012-07-16 75 views
6

可能重复:
GIT: Ignoring Version-Controlled Files如何忽略git中现有的,提交的文件?

有很多周围.gitignore#2的答案,直到现在我还没有找到答案:

我有一个现有的Git项目,与readme.mdsample_folder/,都在顶层。一般来说,我想从我的git(集线器)存储库中删除这些。但我想忽略它们,也就是说,阻止它们在某个克隆的本地存储库中,即在部署机器上被阻止。

.gitignore据我所知,仅仅是忽略了非承诺文件?坦率地说,我不觉得周围隐藏任何东西(从拉+提交)的东西,已经致力于...

在Perforce公司的日子从各自的“客户规范”我会简单排除它(这是相当接近本地克隆回购):

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

当然,我会满足于第二支在那里我直接删除自述和整个样本文件夹。但是,我将不得不继续合并来自'开发'的每一个小小的修复。这是什么,我宁愿避免......我宁愿在一个(追踪)分支上选择本地“例外”。

另外,我觉得git rm --cached每当我做的提交(这也可能偶尔发生,从我的“部署回购”)......

+0

它很难理解你的问题......为什么你想要文件忽略拉?我可以想象麻烦的根源,因为并不是所有的回购都会处于相同的状态,而在同一个提交 – CharlesB 2012-07-16 16:53:25

+0

好吧,对于任何有感染力的/开发人员来说,有一个好处就是sample_folder(或文档文件夹或自述文件) ,在部署场景中,任何一个都是超级的,甚至可能是有问题的... – 2012-07-16 17:04:02

+0

@Wooble:这听起来很有希望!感谢堆。将调查。 – 2012-07-16 18:29:08

回答

0

这不是关于的.gitignore的问题。如果这些代码是而不是代码,则应通过子模块在单独的回购中跟踪它,并且不要在服务器上运行任何git submodule commandsh。或者只是在结账后将脚本移除到部署机器上。

2

听起来你可能会使用git checkout作为你的部署方法。有时候这会起作用,有时需要更多一点。如果存储库中存在开发工件,则需要多一点。

处理这个问题的最明显的方法是有一个部署脚本来执行pull操作,然后删除多余的目录和文件。这不幸的是给你留下了一个可能会让人困惑的部分存储库,它增加了一个特殊的脚本,它必须记住要使用并保持最新。

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

您希望开发和部署之间可以考虑并测试您的更改。如果没有其他的东西,这可以防止开发商A推动一个坏的改变,管理员B通过不知不觉地将其拖入生产中来弥补错误。您还希望能够推动开发并与其他开发人员分享您的工作,而不会冒被推入生产的风险。

你现在可能是单人处理开发和部署的人,但你可能不会晚。如果没有别的办法,这可以保护自己免于意外地将不稳定的变化推向开发,然后在您有机会思考之前将其放入部署中,从而将错误加以复合。

+0

对于严重的版本,我当然会有一个'stable'分支。但对于我的快速和肮脏的'部署',我是非常努力的:)而且我想推回微小的修复(没有看到很多虚假的变化,即所有那些删除,即使我不会将这些修改添加到舞台上)。我会调查Wooble上面的评论...... – 2012-07-16 18:31:47

5

也许我错了,但不会解决你的问题?

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