如何将所有内容回滚到之前的提交

问题描述 投票:0回答:4

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

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

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

sourcetree troubs

git git-commit atlassian-sourcetree
4个回答
105
投票

如果您已将提交推向上游...

选择您想要回滚的提交,并通过单击

Reverse File
Reverse Hunk
Reverse Selected Lines
撤销更改。对您还想回滚到的提交之后的所有提交执行此操作。

reverse stuff reverse commit

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

右键单击提交,然后单击

Reset current branch to this commit

reset branch to commit


44
投票

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

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

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

  2. 在下拉列表中选择活动分支,首先选择“仅限父级”

  3. 右键单击“重置分支到此提交”并选择硬重置选项(软、混合和硬)

  4. 然后进入终端 git push -f

你应该已经准备好了!


6
投票

有两种选项可以恢复合并分支的一个提交。

A。使用源码树

  • 右键单击提交
  • 选择反向提交
  • 有时,它可能会失败。在这种情况下,请尝试选项 B。

B.使用终端

  • 选择您的提交并查看屏幕底部的信息。示例提交 ID:1a6cd9879d8c7d98cdcd9da9cac8979dac7a89c

  • 点击Sourcetree右上角的“Terminal”选项。

  • 在终端中写入: git revert your_commit_id -m 1

  • 当提交消息编辑器打开时:

    • 如果只是接受并退出,请输入 :q 然后单击 Enter。
    • 如果您想更改提交消息,请按“i”,写下您的消息,然后写下:wq单击回车。

0
投票

如果主分支需要拉取请求来接受更改(例如 git flow 并且您不能 git push 强制更改),您可以:

  • Git 克隆项目的副本
  • 转到新副本并签出您要回滚到的提交
  • 转到文件资源管理器中该提交的根文件夹
  • 复制除 .git 文件夹之外的所有文件和文件夹
  • 转到原始项目并从master创建一个新分支
  • 转到原始项目的根文件夹
  • 删除除 .git 文件夹之外的所有文件和文件夹
  • 粘贴之前的所有文件和文件夹
  • Git 添加所有更改并推送到新分支
  • 为这个分支做一个 PR 以掌握
© www.soinside.com 2019 - 2024. All rights reserved.