Egit - 无法现在签出 - 处于变基状态

26

我几天前问了一个类似的问题,但是没有得到有用的答案,所以我想让一切更加精确。

我在Github上有一个大型项目,作为私有repo。我和我的朋友正在开发它。我将整个repo导入本地存储库和eclipse中,一切都很顺利,直到合并冲突出现。每当我遇到合并冲突(例如,当我忘记在经常使用的类上工作之前拉取时),我的eclipse工作区就会切换到“带合并的Rebase”状态:

项目的带合并的Rebase状态

现在我会得到标记,表示出现了合并冲突。因此,我打开要与合并工具合并的类,编辑我需要更改的所有内容,然后再次将该类添加到索引中。

接下来,我提交了所有合并更改,并将一切推送到上游到主分支(因为我们两个人都没有太多关于git和vcs/svn的经验,所以我们只使用主分支)。

但是现在,我既无法切换回主分支,也无法取消rebase或执行其他任何操作。

我尝试了:

右键单击项目文件夹->Team -> Switch To -> master。 检出失败

这是错误通知。

接下来,有人告诉我在Git Repositories视图中取消rebase:

Git Repo视图

但是我的本地repo和远程repo都没有与rebase相关的选项。

接下来,我在本地分支的菜单中尝试了“checkout”。结果相同。 我还尝试将本地分支推送到上游:

在此输入图像描述

这是我预设的合并/变基选项,但这两个选项都会带来相同的结果:

在此输入图像描述

我在Github中查看了我的repo - 所有的更改,包括合并解决,都已经推送到master分支并准备好获取。我的队友可以拉取它们并继续项目工作。但我无法逃脱这个Rebase w/merge状态。每次出现这种状态,我都必须删除所有项目资源,删除本地存储库,重新导入eclipse中的所有内容,最后,我不得不一遍又一遍地进行所有额外的配置。

所以:我该如何逃脱这个变基?另外,变基和合并有什么区别?

5个回答

47
在Git暂存视图中,有一个放弃变基的选项。

enter image description here


谢谢!那正是我在寻找的选项。有点奇怪的是,我总是不得不中止我没有启动的rebase,但是我注意到中止对服务器文件没有影响,所以合并后,我只需中止即可,一切都很好。TY! - Cydhra
您也可以点击“继续”。EGit 将会标记变基为已完成。 - Michał Grzejszczak
谢谢!帮了我一个大忙。 - andrefilipeos

1

git rebase --quit 对我有用。


1

使用合并上游提交到本地分支。

Rebase 意味着将旧的主代码更改为新的主代码(即更改您的分支的基础),而合并则意味着将您的更改添加到主分支。

您也可以尝试使用 Git 命令行解决此类冲突。

使用 Git Rebase/Merge 过程 在您的分支上工作时,获取所有已添加和推送到服务器的文件。

git add .
git commit -m "SSSS"
git push -u origin <BranchName>
git checkout master
git pull

[A] "master"是旧代码,意味着您可以合并您的代码。
git merge <your branch name>
git push

[B]主分支有更新的代码,并列出了从服务器上拉取的文件列表。
$ git checkout your_branch  Note: make sure you are working in your branch
$ git rebase master

现在您将收到有关冲突的消息,因此请从底部开始处理每个文件以解决冲突,现在添加该文件。
$ git add <filename which you just updated> 
$ git rebase --continue

按照上述两个命令,直到所有冲突都被解决。 现在主分支的更改已经合并到您的分支并推送到服务器 << 您的分支 现在您需要更新主分支

$ git checkout master
$ git merge <YOUR_BRANCH>
$ git push

验证 注意:当变基时,如果当前更改被覆盖并且您不想继续,请运行-

$git rebase --abort

在执行合并/变基操作时,如果出现写提交信息的消息窗口,那么你不能逃避...必须写一些内容,然后按照以下步骤进行操作-

$git reset --hard HEAD~1

[该命令将重置当前提交头到上一个级别,即回滚到上次合并的内容]


0
如果您在rebase状态下被阻止,而且eclipse拒绝中止它(没有响应),则必须通过取消选中以下内容来停用项目的自动构建:

Project / Build automatically

这将停止所有未完成的构建。


0
如果您在查看Git暂存视图时遇到问题,或者暂存视图显示错误的存储库,请单击工具栏中rebase图标旁边的三角形,然后单击abort。

点击这里


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接