首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何删除最后3次提交?

如何删除最后3次提交?
EN

Stack Overflow用户
提问于 2016-10-24 22:35:36
回答 2查看 37.8K关注 0票数 40

,我如何删除最后3次提交?,可能有很多例子,但我认为我在这里对我想要的内容非常具体。

例如,我为所有这些做了一个git add .git commit -m "message",以及一个git push -u origin master

我的所有提交都有以下输出( 21是最近提交的)

代码语言:javascript
运行
复制
$git log --pretty=oneline
[[33mab18ba3884244e99d99122e788062b2aaf6ba372[[m commit-21
[[33m9625c19e03a747457162d7c0274d75b154a0b926[[m commit-20
[[33m8668df12af9eee540cc29f9deb6d31d873bb8f24[[m commit-19
[[33m8315cd7962c902d39160fcf2fd018f249e7cf744[[m commit-18
[[33m3bcecc602a70fb60324777831d51c81b6f9ccaa7[[m commit-17
[[33m0485a39c37e72eabb4003e07a6b8cbae7a0d4e25[[m commit-16
[[33m9d3b04a7bcbb82be8b6b7882511f8133745c93b6[[m commit-15
[[33m22c259497571390fdd1461f0dd6b77244851984b[[m commit-14
[[33m39fb965fc245be55bb86491b5871dd2def08fdf4[[m commit-13
[[33m299f6bb77e922d707c9981a48d4d75f57b724719[[m commit-12
[[33me7285377d7afc08c7a5fb0ca44154d2de7e1d275[[m commit-11
[[33mb3360786ef13044d13b6e58c2239cce5595a1abf[[m commit-10
[[33m9af4c134e0d239d1c34fc6bb6087f0473c187fd5[[m commit-9
[[33md55ac3370f506a4bbf8a4690b9285e5de9c6a671[[m commit-8
[[33me50ef5f58b18d05c36343114804d8be180d26bcb[[m commit-7
[[33m962e4a8de7649e06df29f9058a600f8318caf023[[m commit-6
[[33m37f5363f62a3f973fe6e0d516e47b4324186d998[[m commit-5
[[33m0033e32339e4dc0cce8bd208d43b18a4e9ab43d9[[m commit-4
[[33m345239c740a408826f1df0dc5592d5d6b355f019[[m commit-3
[[33m8c85bf2592f52302ff389a5b6af4127fbe04c73b[[m commit-2
[[33ma4077b6c2b6a491af72ae3afc3b5c6260090b605[[m commit-1

我想要做的是有效地删除最后3次提交,最后得到如下结果:(因此,这就像git提交19、20和21从未发生过一样)。

代码语言:javascript
运行
复制
$git log --pretty=oneline
[[33m8315cd7962c902d39160fcf2fd018f249e7cf744[[m commit-18
[[33m3bcecc602a70fb60324777831d51c81b6f9ccaa7[[m commit-17
[[33m0485a39c37e72eabb4003e07a6b8cbae7a0d4e25[[m commit-16
[[33m9d3b04a7bcbb82be8b6b7882511f8133745c93b6[[m commit-15
[[33m22c259497571390fdd1461f0dd6b77244851984b[[m commit-14
[[33m39fb965fc245be55bb86491b5871dd2def08fdf4[[m commit-13
[[33m299f6bb77e922d707c9981a48d4d75f57b724719[[m commit-12
[[33me7285377d7afc08c7a5fb0ca44154d2de7e1d275[[m commit-11
[[33mb3360786ef13044d13b6e58c2239cce5595a1abf[[m commit-10
[[33m9af4c134e0d239d1c34fc6bb6087f0473c187fd5[[m commit-9
[[33md55ac3370f506a4bbf8a4690b9285e5de9c6a671[[m commit-8
[[33me50ef5f58b18d05c36343114804d8be180d26bcb[[m commit-7
[[33m962e4a8de7649e06df29f9058a600f8318caf023[[m commit-6
[[33m37f5363f62a3f973fe6e0d516e47b4324186d998[[m commit-5
[[33m0033e32339e4dc0cce8bd208d43b18a4e9ab43d9[[m commit-4
[[33m345239c740a408826f1df0dc5592d5d6b355f019[[m commit-3
[[33m8c85bf2592f52302ff389a5b6af4127fbe04c73b[[m commit-2
[[33ma4077b6c2b6a491af72ae3afc3b5c6260090b605[[m commit-1

注意:,我已经调查过这个问题了,我无法安静地得到我想要的东西。我尝试过git还原(如果我发表了与git push -u origin master相同的文章,请注意) git rebase git复位

我不关心我的遥控器在这个阶段,我不想让我的本地回购放回几个回复。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-24 22:37:26

可以使用git reset

代码语言:javascript
运行
复制
git reset --hard HEAD~3

git push --force origin master

HEAD~3的意思是返回3次提交

您也可以使用提交号而不是3提交,这样您就可以确定您要返回的时间,例如

代码语言:javascript
运行
复制
git reset --hard 8315cd7962c902d39160fcf2fd018f249e7cf744

编辑:

在重写历史记录时,更喜欢使用

代码语言:javascript
运行
复制
git push origin +master

为了安全,如果你曾经推开不止一个树枝。您可以在Git Force push语法,"-f“与”+分支“上阅读更多内容。

( 约瑟夫·库夫纳的评论指出了这一点,敬佩)

编辑2:

我刚注意到你的日志是用代码打印颜色的,所以

代码语言:javascript
运行
复制
git reset -- hard 33m8315cd7962c902d39160fcf2fd018f249e7cf744 

不会工作,[[33m[[m是颜色代码!所以您的提交号实际上是8315cd7962c902d39160fcf2fd018f249e7cf744

如果你这样做了

代码语言:javascript
运行
复制
git reset --hard 8315cd7962c902d39160fcf2fd018f249e7cf744

它也应该能起作用。

(修正了前面示例中的提交代码)

票数 94
EN

Stack Overflow用户

发布于 2022-03-04 10:27:14

这可以通过使用git重置命令和提交到服务器来实现,如下所示

代码语言:javascript
运行
复制
git reset --hard commitID

git reset --hard 6e58a7ff2abf317257df87e1eda72b3e8f78735a


git push --force origin +branchName

git push --force origin +feature/s2-stored-procedure
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40228651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档