gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 16:49:17 25 4
gpt4 key购买 nike

我知道这个问题有各种各样的排列组合,但我还没有发现任何能解决我的具体问题的东西。事情是这样的:

我在 GitHub 上托管了一个存储库。它是两个远程仓库的来源——一个是我的开发机器,另一个是服务器。我犯了一个愚蠢的错误,并让一个脚本在大约一年半的时间里提交了增量用户数据库备份。所以现在我有大约 200mb 的文件和另外 1Gb 的增量数据库更改提交到我的 git 存储库中(是的,我吸取了教训)。从视觉上看,它看起来像这样,其中“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. 找到您想要返回的提交:
    $ git log --before="2015-12-01" -n1
    commit de4406f26ce506944b2b629890bba9e091468e05
    Author: some Author<foo@bar.com>
    Date: Mon Nov 30 10:46:21 2015 +0100

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

    git reset --hard <commit-hash>

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

    git push -f origin master

  4. 随后的数据库提交将在下一次修剪,或者您立即进行修剪(修剪对您已经实现的所需清理没有影响。这只是真正摆脱那些未引用的东西)

    git prune .


如果你想安全行事,我会建议

  • 你创建一个名为backup的分支在第 1 步之前(没有检查它,只是为了指出你的旧提示!)
  • 在第 3 步之后,请确保您的 master 分支上的所有内容都符合您的喜好。然后删除该备份分支,然后进行修剪。

简而言之:

  • 不要将分支视为一整行提交,而是将其视为结束提示,这有助于保持通往它的链条。
  • 那些链成员一旦变得未被引用,就会被垃圾收集。**

关于git - 如何截断或减少 GitHub 上的 git repo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28081274/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com