2013-05-31 70 views
2

我在VPS上部署Rails应用程序。我在bitbucket上使用我的git repo来同步我的工作和家庭计算机上的文件,因此它在生产二进制文件中被不必要地删除。根据新的gitignore从git跟踪文件中删除

我修改了.gitignore文件,所以它排除了我的应用中的一些路径被跟踪。但是当我将更改推送到远程回购(从那里capistrano需要生产版本)时,它会跟踪.gitignored文件和git克隆将所有垃圾回收。

如何用我新的清理本地主(我通过重新初始化git创建的)替换远程回购主分支?或者如何使远程repo从跟踪树.gitignored文件中删除? 非常感谢你

+0

我是否想将它“untrack”某些文件?编辑:看我的回答 – fge

回答

1

如果某些文件(即.gitignore匹配)被索引跟踪,那么修改.gitignore文件是不够的。

,因为它们是由指数跟踪,他们在检查了树,因此在提交等

如果你想“untrack”这些文件,你的最佳选择是使用专用的形式git rm为此目的:

# Rinse, repeat for each file, or use several paths/globs/etc 
git rm --cached path/to/unwanted/file 

然后提交结果。 --cached选项意味着从索引中删除此文件,而不是工作树。

+0

我很抱歉不清楚:我的英语还是有些模棱两可。我知道如何从本地索引中删除文件,但我的capistrano正在部署脚本克隆我的应用程序的生产版本来自bitbucket-repo,它受到很多jpegs的污染。所以我需要从远程索引中删除不必要的文件 –

+0

嗯,是的,那是什么?这是一样的。只需将修改后的索引推送到远程。 – fge

3

我真的不明白你的问题,但如果你想删除所有匹配您的.gitignore可以的内容的文件:

git ls-files -i --exclude-standard 

您显示的文件,如果你真的想删除它们:

git rm $(git ls-files -i --exclude-standard) 
+0

谢谢,'git rm $(git ls-files -i --exclude-standard)'在windows上无法使用,有其他选择吗? –

+0

好吧,我做了什么 'git ls-files -i --exclude-standard> ../ gitignoreremovers.log' 然后使用 清理'xargs git rm <../ gitignoreremovers.log' –

相关问题