在SAP Web IDE中使用3-WAY Merge与Git
3-Way Merge 是一种允许开发人员在自动合并无法确定时手动解决冲突的功能。
通过三向合并,您可以将两个文件与原始副本进行比较(在更改之前)。例如,如果删除了文件的第一行,并且您的朋友添加了最后一行,则将创建包含这两个更改的合并版本。
我们最近将3-way-merge添加到我们的基本核心功能集中,以使开发人员能够在IDE中解决Git冲突,从而提高工作效率。
SAP Web IDE提供了一个简单直观的图形比较工具,您可以在其中直接进行更改。
以下是在SAP Web IDE中使用Git compare时可以体验到的一些功能:
主要特点:
- 下一个/上一个更改
- 向左/向右推动更改
- 撤销重做
- 在窗格之间同步/取消同步滚动
- 搜索/替换文本
- 跳到线上
让我们看看如何使用3-Way Merge工具和 SAP Web IDE解决冲突 。
- 创建一个文件夹。
- 在新文件夹中, 使用以下内容创建名为file.js的文件 :
- var ClassA = function() {
- this.name = "class A";
- };
- ClassA.prototype.print = function() {
- console.log(this.name);
- };
- var a = new ClassA();
- a.print();
- var inheritsFrom = function (child, parent) {
- child.prototype = Object.create(parent.prototype);
- };
- var ClassB = function() {
- this.name = "class B";
- this.surname = "I'm the child";
- };
- inheritsFrom(ClassB, ClassA);
- ClassB.prototype.print = function() {
- ClassA.prototype.print.call(this);
- console.log(this.surname);
- };
- var b = new ClassB();
- b.print();
- var ClassC = function () {
- this.name = "class C";
- this.surname = "I'm the grandchild";
- };
- inheritsFrom(ClassC, ClassB);
- ClassC.prototype.foo = function() {
- // Do some funky stuff here...
- };
- ClassC.prototype.print = function () {
- ClassB.prototype.print.call(this);
- console.log("Sounds like this is working!");
- };
- var c = new ClassC();
- c.print();
- var ClassD = function () {
- this.name = "class D";
- this.age = 42;
- };
- inheritsFrom(ClassC, ClassB);
- 右键单击该文件夹,然后选择Git> Initialize Local Repository。( 初始化存储库时会自动创建主分支。)
- 打开Git窗格,确保看到该 文件。登台表中的js文件。
- 暂存所有文件。
- 输入提交描述并提交文件。(临时表将被清除。)
- 基于本地主 分支创建新的本地分支。
- 调用新的分支 功能。
- 在 功能 分支中,打开 file.js文件以进行编辑。
- 按<CTRL> + <H>将'var'的所有实例替换为'feature'。
- 保存文件。
- 打开Git窗格,确保在登台表中看到 file.js文件。
- 暂存所有文件。
- 输入提交说明并提交更改。
- 切换到 主 分支。
- 按<CTRL> + <H>将'var'的所有实例替换为'master'
- 保存文件。
- 打开Git窗格,确保看到该文件。 登台表中的js文件。
- 暂存所有文件。
- 输入提交说明并提交更改。
我们在master 和 features 分支的相同位置编辑了file.js文件 。这将创建一个冲突的变化,Git无法自行解决。 我们希望将功能 分支中完成的更改合并 到 主 分支。 为此,我们需要改变。
- 确认您仍在 主 分支上。
- 单击 Git窗格中的Rebase。
- 选择 要素 本地分支。
- 单击确定。显示以下消息:
- 单击关闭。Git窗格现在处于rebase进度 模式。
文件名旁边的(> <)图标表示存在冲突。 - 双击临时表中的文件以打开3-Way Merge编辑器。
- 双击file.js [compare] 选项卡以最大化视图。
在右侧,您可以看到源分支(功能)中的文件,在左侧,您可以看到目标分支(主)中的文件。在中间,您可以看到合并的文件(最初与左侧相同)。有8个冲突需要解决。
让我们使用3-Way Merge工具解决冲突 。
- 单击
(下一步)两次。这将带你到第9行。
- 单击
(按下左侧)。合并版本中的第9行现在包含从功能分支中获取的内容 。
- 单击
(撤消)。合并版本中的第9行现在包含从主分支获取的内容 。
- 单击
(重做)。合并版本中的第9行现在包含从功能 分支中获取的内容。
- 单击
(接受其更改)。合并后的版本现在包含从功能 分支中获取的内容。
- 单击
(按下右侧)第1行和第9行。
合并版本中的第1行和第9行现在包含从主分支获取的内容 。 - 保存更改。
我们已经修复了冲突,现在已准备好继续进行变革过程。
- 打开Git窗格。
- 阶段file.js文件
- 单击继续。
你完成了!
新的比较编辑器也可用于“双向比较”。
要进行比较,请在登台表中双击修改后的文件(*),或右键单击该文件并选择“ 比较” 。