git 怎么删除 指定 commit 快照 ?

2019 年 1 月 27 日
 frylkrttj

git reset --hard <commit_id>

我运行该命令为什么不是删除这个快照而是调到这个快照了。前几个小时实验的,应该不会记错。

7954 次点击
所在节点    git
45 条回复
akatquas
2019 年 1 月 27 日
rebase ?
frylkrttj
2019 年 1 月 27 日
frylkrttj
2019 年 1 月 27 日
@ akatquas 找过好多教程了,rebase 也试过了总不是删除我指定的那个 commit,我还想同时删除多个 commit 不知道怎么做。
des
2019 年 1 月 27 日
“彻底回退到某个版本”
是退回到这个版本,不是上一个
你应该这样,不过新手不建议,不然怎么恢复都不知道
git reset --hard hash^
CRVV
2019 年 1 月 27 日
des
2019 年 1 月 27 日
@frylkrttj

另外完全删除是不可能的,或者说超级麻烦(危险),比如你提交了一个密码文件,想要删除
xupefei
2019 年 1 月 27 日
你找的那个教程太坑人了,那不是删单个 commit,而是把那个 commit 之后的全删掉。
正确的办法是 rebase: https://stackoverflow.com/questions/2938301/remove-specific-commit
capric
2019 年 1 月 27 日
使用 rebase 交互模式
rebase -i HEAD~N # 向前 N 个 commit,必须包含你要删除的那些 commit
d commit_hash # 把你要删除的的 commit 前面的指令修改成 d(drop,删除、丢弃的意思)
在唤起的编辑器保存退出即可
xml123
2019 年 1 月 27 日
lz 相问的可能是 revert ?
ayase252
2019 年 1 月 27 日
rebase -i
reset --hard 是将 HEAD (分支的指针),索引(暂存区)以及工作目录全部恢复到指定 commit
https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E9%87%8D%E7%BD%AE%E6%8F%AD%E5%AF%86
yuikns
2019 年 1 月 28 日
@xupefei 那个链接表述似乎并没有什么问题。楼主中文欠佳的感觉
xiri
2019 年 1 月 28 日
求求楼主去把 git book 看完再来提问吧!有中文版的,你的问题基本都能找到答案,,,,,
https://git-scm.com/book/zh/v2

你看不懂 git 的原理没关系,至少把 git book 上的操作过一遍吧,,,,,
frylkrttj
2019 年 1 月 28 日
@capric 跳出编辑器的时候那么多备注我就懵了
frylkrttj
2019 年 1 月 28 日
@xiri 很多看不懂 #12
Yggdroot
2019 年 1 月 28 日
@des 你的回答是第一个正确回答,直接被提问者无视了。
frylkrttj
2019 年 1 月 28 日
@Yggdroot #15 每条回复我都看了 ,@akatquas #1 的回复我发帖前也找过教程 试过 rebase 没达到我删除 commit 的目的。

看了大家的回复,感觉删除 commit 比学习 git 入门教程还难。
youstu
2019 年 1 月 28 日
rebase 交互模式可以删除
frylkrttj
2019 年 1 月 28 日
@youstu #17 看大家的回复跟我的测试结果:删除 commit 是复杂的,因为有不同情况的 commit 不知道我实验的时候是什么情况的 commit 应该用什么样的删除方式。反正 rebase 我试过一次不行。
thinkmore
2019 年 1 月 28 日
一般回退代码使用 reset 或者 revert 更多一些吧.其实就就算是 rebase -i,也只是复制你需要的节点形成新的分支而已,而你不需要的节点仍然是不会被删除的.也不太建议删除某一个 commit object
SakuraKuma
2019 年 1 月 28 日
rebase -i 呀..

https://learngitbranching.js.org/ 推荐个学习地..

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

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

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

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

© 2021 V2EX