撤消git rebase

时间:2019-03-21 18:27:55

标签: git intellij-idea rebase

我要使用intelliJ来开发功能分支,我想将团队在master上所做的更改集成到我的分支中,但是我搞砸了。
我签出了master,从Git弹出窗口中选择了功能分支,然后选择了“将当前基础重新设置为选定的”,以为这会将来自master的更改添加到功能分支的顶部,不幸的是,情况恰恰相反。 因此,我现在想做的是撤消基于master的此基础,我想将master恢复到最新的head commit。
有什么建议吗?
我读到,重新定基会创建一个新的提交,但是我认为那没有完成,因为我有冲突,当我从git命令行运行master的FAILED. Reason: Parameters: [ssm:myparam:1] cannot be found. 时,我看到:

git status

You are currently rebasing branch 'master' on 'FEATURE/....'. (fix conflicts and then run "git rebase --continue") (use "git rebase --skip" to skip this patch) (use "git rebase --abort" to check out the original branch)

3 个答案:

答案 0 :(得分:1)

  

有什么建议吗?

首先从命令行使用Git,在习惯了日常命令后才移至GUI。

我建议您阅读一些关于git rebase的知识,以便有一些知识可以使用。

  

git-rebase-重新应用在另一个基本提示上

(来自:https://git-scm.com/docs/git-rebase

正在回答...

您正处于重新设置过程的中间,并且基于我在GUI上的XP,其中大多数不能正确处理重新设置过程。

请按照以下步骤操作:

  1. 在终端(Linux,osx)或Git Bash(Windows)中打开存储库文件夹。
  2. 让我们中止并重新开始,在终端"git rebase --abort"中执行。在开始 rebase 之前,此命令会将您的 master 还原为 HEAD 状态。

从现在开始,让我们通过终端进行 rebase ,但请记住,像合并一样,rebase也必须从要更新的分支开始:

  1. git checkout master或您要从功能分支获取新提交的分支
  2. git rebase my_feature_branch:请阅读终端输出!。您将拥有足够的说明来完成此基础操作。

PS:您可能会面临许多步骤和许多git rebase --continue,但请不要担心这是正常的Git行为。一旦发生冲突,请将其修复为普通合并,并在需要时提交并继续。

答案 1 :(得分:1)

如果重新设置尚未完成,请中止它。如果由于冲突而停止了rebase,则会出现解决它们的提示。如果您取消合并提示而未解决冲突,则将显示一条通知,其中包含解决冲突,继续和中止的选项 Rebase notification

此外,随着正在进行的重新设置,在“分支”弹出窗口的顶部可以执行“中止重新设置”操作

Branches popup

它在VCS-Git菜单中也可用。您可以始终使用查找操作(Ctrl + Shift + A)或随处搜索(双移)进行查找。或在命令行中使用git rebase --abort,例如通过内置终端(Alt + F12将其打开)

如果重新设置已经完成,则应将当前分支(仍是主分支)重置为以前启用的提交。您可以将其重置为原始/主服务器所在的提交,除非有未推送的提交。

如果存在未推送的提交,则必须在命令行上使用git reflog来查找提交的哈希,然后在此处重置当前分支。

  

认为这会在功能分支的顶部添加来自master的更改,不幸的是,情况恰恰相反

顺便说一句,IntelliJ显示提示以阐明操作。在分支弹出窗口中选择一个动作时,状态栏会显示该动作的描述以及确切的分支名称。

答案 2 :(得分:0)

  

所以我现在想做的是撤消基于master的此基础,我想将master恢复到最新的head commit。

大概是您在自己的本地存储副本中工作,该副本存储在某处服务器上。在这种情况下,该服务器上有一个master分支的完美版本,您只需要告诉git将本地master替换为服务器上的分支即可。假设共享存储库称为upstream。您可以执行以下操作:

git checkout master

确保您确实如预期的那样在master分支上。您将要擦除对master分支的所有本地更改,因此需要确保您在正确的位置。然后:

git fetch upstream master
git reset --hard upstream/master

此后,您的master应该与服务器上的一致。有关此主题的更多信息,请查看相关问题How do I force “git pull” to overwrite local files?