git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
gdm
V2EX  ›  git

怎样删掉一些早期版本?

  •  
  •   gdm · Apr 26, 2013 · 3587 views
    This topic created in 4772 days ago, the information mentioned may be changed or developed.
    本人 git 小白,一直用 git 保存写作版本,但出现了一个问题。
    比如某个 repo ,按顺序建立了 1 2 3 4 5 6 7 这几个版本。
    现在觉得 1-4 太老了,白占空间,没啥用,想删掉。
    翻翻书, rebase 好像是针对近期版本的,比如把 5-7 合一。而我现在需要的是 1-5 合一。

    所以,该如何操作?
    7 replies    1970-01-01 08:00:00 +08:00
    clino
        1
    clino  
       Apr 26, 2013
    那你可以先从5建一个分支,然后rebase1-5,然后再处理剩下的版本

    还有一个办法是直接浅clone,这样就把旧版本直接扔了
    jsz
        2
    jsz  
       Apr 26, 2013
    你是想把所有的 commit 都合成一个?

    是的话可以 git checkout --orphan new-branch。这样新的分支上是你最新的代码,并且没有提交历史,commit 一下就好了,最后只有一个 commit。

    然后你可以把原分支删掉,把新分支重命名为原分支。

    然后用 git gc,把原来的 commit 留下的东西删掉。
    wwwjfy
        3
    wwwjfy  
       Apr 26, 2013
    rebase可以操作任何版本.. rebase -i后

    pick 1
    pick 2
    pick 3
    ...
    pick 6
    pick 7
    写成
    pick 1
    s 2
    s 3
    s 4
    s 5
    pick 6
    pick 7
    就能把1-5合成一个
    jsz
        4
    jsz  
       Apr 26, 2013
    @wwwjfy 试一下你就知道这是不可能的 :) 第二个 commit 只能用 edit。
    wwwjfy
        5
    wwwjfy  
       Apr 26, 2013
    @jsz 肯定没问题,刚才试了下,确实... 什么理由第二个只能edit, squash把当前commit包含进前一个,不需要edit,只需要做完之后编辑commit message就行

    @gdm 如果从第一个改,可以直接git rebase -i --root
    jsz
        6
    jsz  
       Apr 26, 2013
    @wwwjfy 嗯嗯,确实,git rebase -i --root 是 1.7.12 新加的特性,我还没升级。。
    gdm
        7
    gdm  
    OP
       Apr 26, 2013
    灰常感谢大家
    老糊涂了,忘记可以 git clone --depth
    rebase -i --root 也很好用, git 真是人性化
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1049 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 22:35 · PVG 06:35 · LAX 15:35 · JFK 18:35
    ♥ Do have faith in what you're doing.