首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何才能在一个简单的repo中取消提交分支中的最后几个提交呢?

我如何才能在一个简单的repo中取消提交分支中的最后几个提交呢?
EN

Stack Overflow用户
提问于 2011-09-14 22:33:43
回答 2查看 5.8K关注 0票数 1

这个question似乎是用来处理来自主分支的提交的倒带。我可以在存储库中的分支上使用类似的git reset --soft命令吗?还是应该尝试理解git revert

最终,我希望在空闲的repo中通过两个或三个提交(而不仅仅是最后一个)来倒回两个分支。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-14 23:24:35

我还是不清楚回购在哪里。你说它是裸露的,但你一定也有一个非裸露的地方。

如果你只想倒带本地分支,那么你可以使用git reset。因此,如果你有一个本地分支beta,那么你可以像这样倒带它:

代码语言:javascript
复制
$ git checkout beta
$ git reset --hard HEAD~2 

这将丢弃3个提交:HEADHEAD~1HEAD~2。它们将在大约90天内得到垃圾收集,因此如果需要,您可以获取它们。

如果你有一个叫做 origin 的远程repo (它是空的),并且你想要在那里倒带分支,那么你可以通过强制推送来实现。假设你在beta上推送了3个提交,在它们准备好之前。您可以将它们保留在本地项目中,但将它们从远程裸存储库中删除,如下所示:

代码语言:javascript
复制
$ git push -f origin beta~3:beta

这对使用该存储库的其他人来说可能很苛刻,但听起来您对此没有意见。

如果您有一个空的存储库,那么您可以强制重置分支,如下所示:

代码语言:javascript
复制
$ git branch -f beta beta~3

注意:这也适用于倒带本地分支的第一种情况。同样,这对使用此repo的任何人都是不友好的。

票数 7
EN

Stack Overflow用户

发布于 2011-09-14 22:40:45

这取决于你想做什么。git revert将在您的存储库中生成新的提交,以撤销您选择的提交所做的更改。从更改跟踪的角度来看,这很好--您可以看到恢复的内容和原因,并且可以在以后重新考虑您的决定。

您可以运行git reset (不带--soft,这只在工作副本中有意义),简单地将存储库重置回以前的状态。这会在您选择提交之后丢弃提交,因此您将永远丢失该历史记录。如果有人拥有存储库的远程工作副本,他们会突然发现他们的工作副本不同步(当他们运行git push时,他们可能会无意中重新引入更改)。

如果它是您自己的存储库,并且您没有与其他任何人共享它,那么git reset是很好的。否则,git revert可能是更好的选择,因为它在存储库历史中留下了痕迹,并且与远程工作副本进行了很好的交互。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7418095

复制
相关文章

相似问题

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