怎样删掉一些早期版本?

2013-04-26 08:34:54 +08:00
 gdm
本人 git 小白,一直用 git 保存写作版本,但出现了一个问题。
比如某个 repo ,按顺序建立了 1 2 3 4 5 6 7 这几个版本。
现在觉得 1-4 太老了,白占空间,没啥用,想删掉。
翻翻书, rebase 好像是针对近期版本的,比如把 5-7 合一。而我现在需要的是 1-5 合一。

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

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

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

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

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

@gdm 如果从第一个改,可以直接git rebase -i --root
jsz
2013-04-26 12:36:24 +08:00
@wwwjfy 嗯嗯,确实,git rebase -i --root 是 1.7.12 新加的特性,我还没升级。。
gdm
2013-04-26 23:42:14 +08:00
灰常感谢大家
老糊涂了,忘记可以 git clone --depth
rebase -i --root 也很好用, git 真是人性化

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/67010

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX