我几天前问了一个类似的问题,但我没有得到有用的答案,所以我想让一切都更精确。
我有一个大项目作为github上的私人回购。我和我的一个朋友正在研究它。我将整个仓库导入到本地存储库并进入eclipse,一切都很顺利,直到合并冲突出现。每次,我都会遇到合并冲突(例如,当我在处理经常使用的类之前忘记拉动)时,我的eclipse工作区中的整个项目会切换到“Rebase w / merge”状态:
现在我得到了合并冲突的标记。所以我打开了类与合并工具合并,编辑了我必须更改的所有内容,并再次将类添加到索引中。
接下来,我提交了所有合并更改并将所有内容推送到上游到master-branch(到目前为止我们只使用master,因为我们都没有使用git和vcs / svn的经验。)
但是现在,我既不能切换回主分支,也不能取消rebase或做任何其他事情。
我试过了:
右键单击项目文件夹 - >团队 - >切换到 - >主。
这是错误通知。
接下来我被告知取消Git Repositories View中的rebase:
但我的本地仓库和远程仓库都没有任何与变基有关的选择。
接下来,我在本地分支的菜单中尝试了“checkout”。结果相同。 我还试图将我的本地分支推入上游:
这是我对merge / rebase选项的预设,但这两个选项都会产生相同的结果:
我在github中查看了我的repo - 我的所有更改(包括合并解析)已经被推送到主分支并准备好获取。我的队友可以拉他们并继续工作。但我无法逃避这个Rebase w / merge状态。每次这个状态出现时,我都必须删除所有项目资源,删除本地存储库,将所有内容重新导入到eclipse中,最后,我不得不一遍又一遍地进行所有其他配置。
所以:我怎样才能逃脱这个变种呢?顺便说一下:rebase和合并有什么区别?
答案 0 :(得分:36)
答案 1 :(得分:1)
使用合并上游提交到本地分支。
Rebase意味着将旧主服务器更改为新主服务器代码(即更改分支机构的基础),并且合并方法将您的更改添加到主服务器。
您也可以尝试使用git命令行来解决此类冲突。
使用Git Rebase / Merge Process 在您的brach上工作时,可以添加所有文件并将其推送到服务器
git add .
git commit -m "SSSS"
git push -u origin <BranchName>
git checkout master
git pull
[A]主人是旧代码意味着您可以合并您的代码
git merge <your branch name>
git push
[B] Master有更新的代码并显示从服务器中提取的文件列表
$ 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
按照上述两个命令,直到解决所有冲突。 现在master更改合并到您的分支并推送到服务器&lt;&lt;你的分支 现在您需要更新主分支
$ git checkout master
$ git merge <YOUR_BRANCH>
$ git push
验证 注意:如果您的当前更改被覆盖并且您不想继续进行变基,请运行 -
$git rebase --abort
当进行合并/ rebase时,如果消息窗口出现写你的提交语句,那么就没有ESCAPE ...写一些东西,然后执行以下操作 -
$git reset --hard HEAD~1
[此命令会将当前提交头重置为1级,返回到上一次合并中发生的事件将恢复]
答案 2 :(得分:0)
如果您在查看Git Staging视图或登台视图显示错误的存储库时遇到问题,只需单击工具栏中rebase图标旁边的三角形,然后单击中止。
答案 3 :(得分:0)
如果您在重新设置状态下被阻止,并且如果eclipse拒绝中止它(无响应),则必须通过取消选中以下内容来停用项目的自动构建:
项目/自动构建
这将停止所有挂起的构建。
答案 4 :(得分:0)
git rebase --quit
为我工作。