2015-10-19 24 views
1

我使用Eclipse作为本地开发和GitHub作为我的远程git回购。 Eclipse会在我的远程回购中生成一些我不想要的工件,但我忘记将这些工件添加到我的.gitignore文件中。我把一切交给远程GitHub库,实现了以下物品被推(再次,无意的):如何使用gitignore更正远程GitHub回购协议?

myapp/ 
    <lots of other stuff> 
    .classpath --> undesired 
    .settings  --> undesired 
    .project  --> undesired 
    bin/   --> undesired 

等我回去,并添加以下到我的.gitignore

# Eclipse 
.classpath 
.project 
.settings 
bin/ 

然后我承诺&推。令我惊讶的是,这些文件仍然在我的远程仓库中。我本来预计以下行为:

  1. 我推.gitignore变化的GitHub
  2. GitHub上看到,有在其myapp回购违反新.gitignore
  3. GitHub上的条款的文件删除这些文件/从回购现在
  4. 当我去myapp GitHub上的目录,我没有看到他们了

这是不是的情况?这里的解决方法是什么?

回答

0

Git不会解析每个提交上的.gitignore文件,当然,它不会将.gitignore中的更改应用于提交中的整个存储库。

所以你需要手动删除文件(git rm)。

如果你需要有这个文件在你的文件系统使用git rm --cached

+1

此外,如果你想从你的整个历史中删除这些文件,你可以使用BFG回购清洁:https://rtyley.github.io/bfg-repo-cleaner /。请记住修改SHA1,因此您需要仔细考虑编辑旧历史是否适合您的项目以及如何将该消息共享/传递给其他克隆。 –

相关问题