V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
gdm
V2EX  ›  git

怎样删掉一些早期版本?

  •  
  •   gdm · 2013-04-26 08:34:54 +08:00 · 2936 次点击
    这是一个创建于 4248 天前的主题,其中的信息可能已经有所发展或是发生改变。
    本人 git 小白,一直用 git 保存写作版本,但出现了一个问题。
    比如某个 repo ,按顺序建立了 1 2 3 4 5 6 7 这几个版本。
    现在觉得 1-4 太老了,白占空间,没啥用,想删掉。
    翻翻书, rebase 好像是针对近期版本的,比如把 5-7 合一。而我现在需要的是 1-5 合一。

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

    还有一个办法是直接浅clone,这样就把旧版本直接扔了
    jsz
        2
    jsz  
       2013-04-26 09:43:52 +08:00
    你是想把所有的 commit 都合成一个?

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

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

    然后用 git gc,把原来的 commit 留下的东西删掉。
    wwwjfy
        3
    wwwjfy  
       2013-04-26 09:47:57 +08:00
    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  
       2013-04-26 10:19:55 +08:00
    @wwwjfy 试一下你就知道这是不可能的 :) 第二个 commit 只能用 edit。
    wwwjfy
        5
    wwwjfy  
       2013-04-26 10:57:27 +08:00
    @jsz 肯定没问题,刚才试了下,确实... 什么理由第二个只能edit, squash把当前commit包含进前一个,不需要edit,只需要做完之后编辑commit message就行

    @gdm 如果从第一个改,可以直接git rebase -i --root
    jsz
        6
    jsz  
       2013-04-26 12:36:24 +08:00
    @wwwjfy 嗯嗯,确实,git rebase -i --root 是 1.7.12 新加的特性,我还没升级。。
    gdm
        7
    gdm  
    OP
       2013-04-26 23:42:14 +08:00
    灰常感谢大家
    老糊涂了,忘记可以 git clone --depth
    rebase -i --root 也很好用, git 真是人性化
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2267 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 15:52 · PVG 23:52 · LAX 07:52 · JFK 10:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.