Eclipse的Git插件Egit: merge合并冲突具体解决方法

时间:2022-11-15 14:38:24

http://www.cnblogs.com/wavky/p/3504060.html

稍微总结下弄了半个下午的egit的merge合并冲突解决方法,网上看的都是一个模板出来的,看的糊里糊涂,花了很多时间去实验整个合并流程..

前提工作

  • 创建一个普通JAVA工程Test,创建一个类Test,写点东西并加入到本地git库;
  • 创建个develop分支,创建个Develop类,修改Test类的某些语句,添加新代码段,提交;
  • 切换到master分支,创建个Master类,修改Test类的同一部分语句,提交;

以上三条操作不进行详细说明,很简单的。

合并过程

打开git repository exploring视图:

Eclipse的Git插件Egit: merge合并冲突具体解决方法

在Test库中,在develop分支上打开右键菜单,点击Merge:

Eclipse的Git插件Egit: merge合并冲突具体解决方法

出现冲突提示框:

Eclipse的Git插件Egit: merge合并冲突具体解决方法

返回JAVA工程项目视图,可以看见Test工程已经自动进行了部分合并,添加了Develop类,但Test类存在冲突(有红色双箭头标记的文件才是冲突,茶色星星标记的文件没有实际冲突项),选中工程打开右键菜单,打开Merge Tool:

Eclipse的Git插件Egit: merge合并冲突具体解决方法

Merge Tool界面显示如下,左边为冲突文件的当前版本(master分支),右边为准备合并过来的目标版本(develop分支),手工把右边的代码copy到左边,或至少随意更改下左边的文件,保存。   注:右边的窗口有时候标题显示的版本节点不正确,可能是BUG,或者笔主理解能力不足所致。

Eclipse的Git插件Egit: merge合并冲突具体解决方法

在Merge Tool中更改并保存后,当前冲突的Test类如下图中的各种神奇标记符号将自动消除:

Eclipse的Git插件Egit: merge合并冲突具体解决方法

上图的红色神奇符号已经自动合并消除,并呈现类似下图的合并效果:

Eclipse的Git插件Egit: merge合并冲突具体解决方法

Window->Show View->Other,打开Git Staging视图:

Eclipse的Git插件Egit: merge合并冲突具体解决方法

Git Staging视图中,Unstaged Changes部分包含冲突文件(包括手工合并前后),Staged Changes部分包含已经完成自动合并的文件,在已经合并完成的冲突文件Test.java上打开右键菜单,选中Add to Git Index:

Eclipse的Git插件Egit: merge合并冲突具体解决方法

Test.java被添加到Staged Changes下面,并自动生成Commit Message等内容,确认无误后点击Commit提交:

Eclipse的Git插件Egit: merge合并冲突具体解决方法

至此,Merge合并的冲突已经完全解决,从develop到master方向的合并已经完成:

Eclipse的Git插件Egit: merge合并冲突具体解决方法

若要从master合并到develop,只需切换到develop分支,(在git repository exploring视图中)在master菜单上点击Merge即可。笔主使用的Egit2.2版本默认进行Fast-Forward方式的合并,最新的3.2版已经提供是否选择Fast-Forward的UI窗口。

* 关于Egit3.2的Fast-Forward合并:提供该选择的UI窗口仅在JAVA视图窗口中,通过项目工程右键菜单中执行Team->Merge触发显示,通过上面使用git repository exploring视图简单调用Merge的方式仍然使用默认的Fast-Forward合并:

Eclipse的Git插件Egit: merge合并冲突具体解决方法

==============================================

https://allaboutmynonexistedworld.wordpress.com/2014/02/05/eclipse-git-merging-branch-to-master/

1. Make sure the current pointer is at master.Eclipse的Git插件Egit: merge合并冲突具体解决方法

2. Right click on the project to be merged. Select Team -> MergeEclipse的Git插件Egit: merge合并冲突具体解决方法

3. In the pop up window, double click on the branch you want to merge.Eclipse的Git插件Egit: merge合并冲突具体解决方法

4. A merge conflict window should jump up. Click OK to continueEclipse的Git插件Egit: merge合并冲突具体解决方法

5. Right click on the project with a red mark. Select Team -> Merge ToolEclipse的Git插件Egit: merge合并冲突具体解决方法

6. In “Select a Merge Mode” window, select Use HEAD option and hit OKEclipse的Git插件Egit: merge合并冲突具体解决方法

7. Edit it in the editor however you want (play around with the options)Eclipse的Git插件Egit: merge合并冲突具体解决方法

8. Once you decided the conflict is resolved, right click on the red mark file, select Team -> Add to IndexEclipse的Git插件Egit: merge合并冲突具体解决方法

9. Finally, you should be able to commit the changes and push to the upstream.

===========================

Problem resolve “egit remote tracking show nothing”

有时候在用Team => Switch to => 时, 看不到想要的branch, 用如下方法解决.

https://*.com/questions/47390703/how-do-i-get-a-new-branch-to-show-up-in-eclipse-git-remote-tracking?rq=1

How do I get a new branch to show up in Eclipse Git Remote Tracking?

I have an existing Eclipse git project, with a master and development branch present in both local, and remote tracking. I have just added a new branch in my git repository, but I can't figure out how to get it to show up in Eclipse.

I have tried to read up on the subject, but it seems like it is just expected to automatically show up. I have found a lot of similar questions, but they all seem to deal with the issues of a completely empty remote tracking folder, instead of my problem of only a single new branch missing. I already have Master and Develop present.

Here is what does not work:

  • Clicking refresh in the Git repositories window.
  • Any kind of synchronize, pull or other update I can find

Here is what would work:

  • Right clicking the remote tracking folder, and selecting "Paste repository path or URI". If I do that, and select the exact same path as is already there, I can see my new branch. This action does require that I completely clone the whole repository to an empty folder again, and that can't be how this is intended to work.
  • I believe it might work to use some kind of command line tool, but I really want an Eclipse solution to this, as I feel sure it exists, and I am just missing something.

20

In the Git Repositories view:

  1. Right-click the repository and choose Fetch from Upstream
  2. If the new branch will not shown up below Branches/Remote Tracking, you have to configure fetch:
    1. Right-click the fetch node below Remotes/origin and choose Configure Fetch...
    2. In the Configure Fetch make sure there is only the single Ref mapping +refs/heads/*:refs/remotes/origin/*:

God damnit, in my latest attempts, I
just confused two different repositories. So this really does work. Thanks a
lot! – KjetilNordin Nov
20 '17 at 11:56

add a comment

在执行了一次上面的fetch后,  在用Team => Switch to => 时, 可以看到了branch.