【问题标题】:How to ignore mistakenly committed files如何忽略错误提交的文件
【发布时间】:2013-08-31 14:57:37
【问题描述】:

我有一个android项目,错误地将bin文件夹添加到stage并提交。现在我怎么能忽略这个 bin 文件夹并永远忽略它? 我将 bin/ 添加到 .gitignore 文件中,但没有任何变化,而且我在 SourceTree 的工作副本中看到此文件夹中的所有文件。

我使用 SourceTree 作为 git 客户端。

【问题讨论】:

  • 您不能提交删除此文件夹,然后将其添加到您的 .gitignore 文件吗?
  • 您可以尝试:git rm bin,然后添加到您的 gitignore:*./bin

标签: android git controls version


【解决方案1】:

除了忽略文件夹外,您还需要git rm 它。 Git 只会忽略不受其控制的文件。

但请注意:这样做会导致 git 为其他任何拉取这些更改的人删除该文件夹。您最好确保该文件夹只是构建的输出,否则可以很容易地重建。

如果您还没有发布更改(也就是说,如果您从未将它们推送到任何地方并且没有人将它们从您那里拉走),那么您可以选择重写历史.你可以简单地说git reset --soft the_commit_before_you_added_bin(当然,你需要实际的提交ID,或者它的另一个名字,比如HEAD~3等)在你添加它之前基本上“取消提交”。您的工作副本仍将包含文件的最新版本,但 Git 几乎会忘记您提交的文件。 (这也意味着您丢失了中间更改。)然后您可以重做您的提交,这次要小心避免bin

Git 有一个 filter-branch 命令据称可以帮助自动化所有这些,甚至可以保留中间更改。不过我没用过,也不知道怎么用。


强制性大粗体警告:

不要重写已发布的历史记录。

仅撤消/重写从未被推送或拉取的提交。否则,就会出现古怪。

【讨论】:

  • "git rm some_folder" 删除 some_folder 的所有历史记录?
  • 没有。它会删除该文件夹,并且历史记录会显示它已经这样做了。这就是为什么当有人拉出该更改时,他们的文件夹将消失。如果您想否认该文件夹的所有知识,那就更重要了;克隆 repo 的每个人都必须同意这样做,并且必须以某种方式删除该文件夹。
  • 虽然...如果还没有人看到更改...(已更新。)
猜你喜欢
  • 1970-01-01
  • 2016-06-15
  • 2015-12-30
  • 1970-01-01
  • 2016-12-13
  • 2012-03-12
  • 1970-01-01
  • 1970-01-01
  • 2017-11-01
相关资源
最近更新 更多