【问题标题】:How to rollback everything to previous commit如何将所有内容回滚到以前的提交
【发布时间】:2014-04-17 09:43:15
【问题描述】:

最近在一个多人的项目中,提交了如下图所示。用红色标记,您可以看到带有“合并?”的描述/评论的提交。

此提交添加了许多文件并更改了许多其他文件,并且从未打算发生。

使用 我需要做什么才能将所有内容回滚到以蓝色突出显示的提交? (如屏幕截图所示,我落后了 8 个提交。)

【问题讨论】:

  • 我不知道那个程序,但是在 git bash 你可以做git reset --hard [the hash of the commit]。
  • 是否“硬”删除在“错误提交”之后所做的所有其他提交?
  • 是的,它会将所有内容更改回您提交提交后的状态。
  • 除了垃圾回收之外什么都没有,实际上 removes 在 git 中提交,但是 git reset 移动了一个分支指针,一旦提交“超出任何分支的尖端”,它们就会变成垃圾收集的成熟。 (分支的 reflog 将它们保留为默认过期时间 30 天,然后它们才真正被收割。)所以它们实际上已经消失了,但在紧急情况下你可以“取消”它们一个月左右的时间。
  • 右键->反向提交->推送。 flummox-engineering.blogspot.com/2014/10/…

标签: atlassian-sourcetree git git-commit atlassian-sourcetree


【解决方案1】:

如果您已将提交推送到上游...

通过单击Reverse File、Reverse Hunk 或Reverse Selected Lines,选择您要回滚的提交并撤消更改。对您想要回滚到的提交之后的所有提交执行此操作。

如果你还没有将提交推送到上游......

右键单击提交并单击Reset current branch to this commit。

【讨论】:

  • 这个答案已经过时了。
  • 思路是一样的。随意修复它@Yeats
  • 接下来呢?在我将分支重置为上一个提交后,它要求我将所有内容拉回当前版本。我什么都推不了
  • 我试过了.. gui 让它变灰了。终端也不行
  • 对于任何在 SourceTree 右键菜单中显示为灰色的项目的人:我重新启动 SourceTree 并恢复正常。
【解决方案2】:

我搜索了多个选项以将我的 git 重置为特定的提交,但大多数都不是那么令人满意。

我通常使用它来将 git 重置为源树中的特定提交。

  1. 选择提交以在源树上重置。

  2. 在下拉列表中选择活动分支,首先是 Parent Only

  3. 然后右键点击“Reset branch to this commit”并选择硬重置选项(软、混合和硬)

  4. 然后去终端 git push -f

你应该准备好了!

【讨论】:

  • 答案是安全的如果你没有向上游推送提交
  • 只有在你没有向上游推送提交的情况下,答案才有效。
  • 这个答案在向上游推送提交后也有效
  • 此响应提供了在选择提交后完成的提交的总回滚。
猜你喜欢
  • 1970-01-01
  • 2018-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-13
  • 2013-05-27
  • 1970-01-01
相关资源
最近更新 更多