如何截断或减少GitHub上的git repo

时间:2015-01-22 04:24:17

标签: git github

我知道这些问题的各种排列都在四处流淌,但我还没有能够发现任何解决我特定问题的方法。事情是这样的:

我已经在GitHub上托管了一个回购。它是两个远程仓库的起源 - 一个是我的开发机器,另一个是服务器。我犯了一个愚蠢的错误,并且在一年半的时间内有一个脚本提交增量用户数据库备份。所以现在我在git repo中提供了大约200mb的文件和另外1Gb的增量db更改(是的,我吸取了教训)。在视觉上,它看起来像这样," C"表示合法的代码更改和" DB"意味着它只包含一个不重要的数据库备份:

C1--C2--C3--C4--DB--DB--DB--DB--DB--DB--DB--DB...(1.5 years)...DB--DB...

我想做的是:

                  /--DB--DB--DB--DB--DB...<--(throw all this away forever)
                 /
C1--C2--C3--C4--//<--REVERT TO THIS POINT --C5--C6--C7....

我基本上创建了一个包含所有这些愚蠢数据库提交的分支,将我的回购支持到分支离开的点,然后删除分支。关于如何做到这一点的任何想法?理想情况下,我不必创建新的GitHub仓库,但我会接受任何性质的建议。

1 个答案:

答案 0 :(得分:0)

  1. 找到您想要回复的提交: git reset --hard <commit-hash>

  2. 重置您的(本地)存储库指针:

    git push -f origin master

  3. force²将此推送到您的服务器(²,因为您必须覆盖历史记录)

    git prune

  4. 随后的DB提交将在下次修剪,或者你立即修剪(修剪对你已经实现的,理想的清理没有影响。它只是真正摆脱那些未引用的东西)

    backup

  5. 如果你想安全玩,我会建议

    • 你要在第1步之前创建一个名为In [67]: pd_tmp_start = pd_tmp_start.mask(pd_tmp_start.cumsum()==0) In [68]: pd_tmp_start Out[68]: 0 1 0 NaN NaN 1 NaN 0.3 2 1.2 0.4 3 0.0 0.0 的分支(没有检查它,只是指向你的旧提示!)
    • 在第3步确认之后,主分支上的所有内容都符合您的喜好。然后删除该备份分支,然后去修剪。

    简而言之:

    • 将分支视为一整行提交,而不是作为结尾提示,有助于保持链条活着导致它。
    • 这些连锁成员一旦被引用就会被垃圾收集。**