git 怎么删除 指定 commit 快照 ?

2019-01-27 21:27:05 +08:00
 frylkrttj

git reset --hard <commit_id>

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

7123 次点击
所在节点    git
45 条回复
akatquas
2019-01-27 21:57:58 +08:00
rebase ?
frylkrttj
2019-01-27 22:03:30 +08:00
frylkrttj
2019-01-27 22:05:04 +08:00
@ akatquas 找过好多教程了,rebase 也试过了总不是删除我指定的那个 commit,我还想同时删除多个 commit 不知道怎么做。
des
2019-01-27 22:07:47 +08:00
“彻底回退到某个版本”
是退回到这个版本,不是上一个
你应该这样,不过新手不建议,不然怎么恢复都不知道
git reset --hard hash^
CRVV
2019-01-27 22:08:30 +08:00
des
2019-01-27 22:09:21 +08:00
@frylkrttj

另外完全删除是不可能的,或者说超级麻烦(危险),比如你提交了一个密码文件,想要删除
xupefei
2019-01-27 22:12:01 +08:00
你找的那个教程太坑人了,那不是删单个 commit,而是把那个 commit 之后的全删掉。
正确的办法是 rebase: https://stackoverflow.com/questions/2938301/remove-specific-commit
capric
2019-01-27 22:30:40 +08:00
使用 rebase 交互模式
rebase -i HEAD~N # 向前 N 个 commit,必须包含你要删除的那些 commit
d commit_hash # 把你要删除的的 commit 前面的指令修改成 d(drop,删除、丢弃的意思)
在唤起的编辑器保存退出即可
xml123
2019-01-27 22:33:29 +08:00
lz 相问的可能是 revert ?
ayase252
2019-01-27 22:53:35 +08:00
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-01-28 05:15:51 +08:00
@xupefei 那个链接表述似乎并没有什么问题。楼主中文欠佳的感觉
xiri
2019-01-28 08:42:57 +08:00
求求楼主去把 git book 看完再来提问吧!有中文版的,你的问题基本都能找到答案,,,,,
https://git-scm.com/book/zh/v2

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

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