Git:删除单个远程版本

6

我已经开始将我的私有subversion项目转换为git(Github),并将代码发布给公众。因此,我是一个git新手。

不幸的是,有一个包含机密数据的项目版本。该版本没有标记,我只知道它的哈希值。

是否有一种方法可以从远程git存储库完全删除特定版本的内容? 这是一个独立项目,因此没有人会受到影响。


“远程”是什么意思?如果这是一个独立项目,为什么会有一个“远程”仓库?或者这是其他人从中拉取的仓库吗?如果是独立项目,那你不能只删除(比如文件系统删除,或者将其重置回第一个提交并快进等)“远程”git仓库,然后用你修改过的版本替换它吗? :) 当然,这假设你知道如何从本地仓库中删除一个修订版本。 - Pod
之前这是我个人的项目,但我现在正准备开源代码。我按照http://github.com/guides/import-from-subversion的教程导入了该仓库。之后我发现其中有一个提交包含了机密数据。我不知道如何从Github和本地克隆中删除该版本。我在Github上打开了该存储库,所以代码归属于我(并将在GPLv3许可下发布)。 - user237076
请见GitHub上的“删除敏感数据”:http://help.github.com/removing-sensitive-data/。 - Greg Bacon
可能是重复问题:https://dev59.com/73NA5IYBdhLWcg3wrPyq - Greg Bacon
你链接的教程并没有提供解决我的问题的方法。它只是从所有版本中删除了文件。我不想删除文件,我只想删除修订版。无论如何,我通过谷歌搜索找到了解决方案,找到了另一个SO问题。 - user237076
1个回答

4

我在这里找到了解决我的问题的帖子。

如果您需要修复的提交不是最近的一个:

  1. git rebase --interactive $parent_of_flawed_commit

    如果您想要修复多个有问题的提交,请传递其中最老的那个提交的父提交。

  2. 编辑器将弹出,显示自您提供以来的所有提交列表。

    1. 在您想要修复的任何提交前面将 pick 更改为 edit
    2. 保存后,git 将重演列出的提交。
  3. Git 将为您说过您想要编辑的每个提交回到 shell:

    1. 按任意方式更改提交。
    2. git commit --amend
    3. git rebase --continue

大部分操作将通过各种命令的输出向您解释。这很容易,您不需要记住它 - 只需记住 git rebase --interactive 可让您纠正提交,而无论它们距今多久。


我认为,使用“压缩”而不是“编辑”会使它更容易。 - Tilman Vogel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接