2010-02-14 106 views
6

我已經開始將我的私有Subversion項目切換到git(Github)並將代碼發佈給公衆。所以,我是一個git新手。Git:刪除單個遠程修訂版

不幸的是,對包含機密數據的項目進行了修訂。修訂沒有標記,我只知道它的哈希值。

有沒有辦法從遠程git倉庫中徹底清除特定的修訂版本? 這是一個獨立的項目,所以沒有人會從操作中受到傷害。

+0

請參閱 「刪除敏感數據」 在GitHub上:http://help.github.com/removing-sensitive-data/ – 2010-02-14 19:57:30

+0

可能重複:http://stackoverflow.com/questions/872565/how-do- i-remove-sensitive-files-from-gits-history – 2010-02-14 19:58:47

+0

您正在鏈接的教程不能爲我的問題提供解決方案。它只是從所有修訂中刪除文件。我不想刪除該文件,我只想刪除該修訂。無論如何,我可以通過Google搜索找到解決方案,找到另一個SO問題。 – dgraziotin 2010-02-14 21:04:36

回答

3

該帖子位於here解決了我的問題。

如果你要修復的承諾是不是最近的一個:

  1. git rebase --interactive $parent_of_flawed_commit

    如果要修復幾個缺陷提交,通過一種最古老的父他們。

  2. 將出現一位編輯,並列出自您提供的所有提交的所有提交。

    1. 更改pickedit在任何您想修復的提交之前。
    2. 保存後,git會重播列出的提交。
  3. Git會回落到外殼的每一個承諾,你說你要編輯:

    1. 更改你喜歡的任何方式提交。
    2. git commit --amend
    3. git rebase --continue

大多數這個序列將通過各種命令的輸出,當您去解釋給你。這很容易,你不需要記住它 - 只要記住,git rebase --interactive可以讓你糾正提交,不管他們多久以前。

+0

感謝格式化,jleedev – dgraziotin 2010-02-14 22:01:52

+0

我認爲,使用'squash'而不是'edit'使得它更容易。 – 2011-05-06 20:50:29