Change:
<!-- Do Not Delete This! bugreporttemplate --<!-- Please read our Rules of Conduct: --<!-- Read our guide about submitting issues: --<!-- Search existing issues to avoid creating duplicates. --<!-- Test using the latest Insiders build to see if your issue has already been fixed: --<!-- Instead of creating your report here, use 'Report Issue' from the 'Help' menu in VS Code to pre-fill useful information. --<!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes <!-- If you answered No above, use 'Help: Start Extension Bisect' from Command Palette to try to identify the cause. --<!-- Issues caused by an extension need to be reported directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: 1.73.0 OS Version: WindowsNT x64 10.0. Steps to Reproduce: a struct with some fields and functions in one branch the same struct in another branch, with a minor difference in one of the fields. the branches and open the merge editor. Accept Combination. On this example, is on the left side and on the right side. I'd expect "Accept Combination" to have only a single copy for the matching lines, and duplicate only the different line (and then I'd choose which one to keep), but it duplicates the entire struct. !
I also see that deleted/deleted is considered a conflict. I see no reason why. !
I also had duplicated code on two occasions when rebasing after the new VSCode update (and that's why I searched for this issue here). It seems that it kept the old code and the new code and didn't complain or considered a change/conflict. I still haven't used , so this duplication happened without using this new feature. In both situations, I had to manually remove the old code. If I find this situation again I will add here its screenshots.
Thanks,
Thank you!
Verification steps: Use the command to open that JSON and notice that conflicts with equal changes on both sides are auto-resolved.

Discussion:
} else if (range.input2Diffs.length === 0) { newState = ModifiedBaseRangeState.base.withInputValue(1, true); handled = true; <ins> } else if (range.isEqualChange) { newState = ModifiedBaseRangeState.base.withInputValue(1, true); handled = true; </ins> } else { newState = ModifiedBaseRangeState.base; handled = false;

appendLinesToResult(input2Lines, baseRange.input2Range); } else if (baseRange.input2Diffs.length === 0) { appendLinesToResult(input1Lines, baseRange.input1Range); <ins> } else if (baseRange.isEqualChange) { appendLinesToResult(input1Lines, baseRange.input1Range); </ins> } else { appendLinesToResult(baseLines, baseRange.baseRange); }

*  Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ <del> import { compareBy, numberComparator, tieBreakComparators } from 'vs/base/common/arrays'; </del> <ins> import { compareBy, equals, numberComparator, tieBreakComparators } from 'vs/base/common/arrays'; </ins> import { BugIndicatingError } from 'vs/base/common/errors'; import { splitLines } from 'vs/base/common/strings'; import { Constants } from 'vs/base/common/uint';

public readonly input1CombinedDiff = DetailedLineRangeMapping.join(this.input1Diffs); public readonly input2CombinedDiff = DetailedLineRangeMapping.join(this.input2Diffs); <ins> public readonly isEqualChange = equals(this.input1Diffs, this.input2Diffs, (a, b) => a.getLineEdit().equals(b.getLineEdit())); </ins> constructor( public readonly baseRange: LineRange,

} ); }); <ins> test('auto-solve equal edits', async () => { await testMergeModel( { "languageId": "javascript", "base": "const { readFileSync } = require('fs');nnlet paths = process.argv.slice(2);nmain(paths);nnfunction main(paths) {n    // print the welcome messagen    printMessage();nn    let data = getLineCountInfo(paths);n    console.log("Lines: " + data.totalLineCount);n}nn/**n * Prints the welcome messagen*/nfunction printMessage() {n    console.log("Welcome To Line Counter");n}nn/**n * @param {string[]} pathsn*/nfunction getLineCountInfo(paths) {n    let lineCounts = paths.map(path => ({ path, count: getLinesLength(readFileSync(path, 'utf8')) }));n    return {n        totalLineCount: lineCounts.reduce((acc, { count }) => acc + count, 0),n        lineCounts,n    };n}nn/**n * @param {string} strn */nfunction getLinesLength(str) {n    return str.split('n').length;n}n", "input1": "const { readFileSync } = require('fs');nnlet paths = process.argv.slice(2);nmain(paths);nnfunction main(paths) {n    // print the welcome messagen    printMessage();nn    const data = getLineCountInfo(paths);n    console.log("Lines: " + data.totalLineCount);n}nnfunction printMessage() {n    console.log("Welcome To Line Counter");n}nn/**n * @param {string[]} pathsn*/nfunction getLineCountInfo(paths) {n    let lineCounts = paths.map(path => ({ path, count: getLinesLength(readFileSync(path, 'utf8')) }));n    return {n        totalLineCount: lineCounts.reduce((acc, { count }) => acc + count, 0),n        lineCounts,n    };n}nn/**n * @param {string} strn */nfunction getLinesLength(str) {n    return str.split('n').length;n}n", "input2": "const { readFileSync } = require('fs');nnlet paths = process.argv.slice(2);nrun(paths);nnfunction run(paths) {n    // print the welcome messagen    printMessage();nn    const data = getLineCountInfo(paths);n    console.log("Lines: " + data.totalLineCount);n}nnfunction printMessage() {n    console.log("Welcome To Line Counter");n}nn/**n * @param {string[]} pathsn*/nfunction getLineCountInfo(paths) {n    let lineCounts = paths.map(path => ({ path, count: getLinesLength(readFileSync(path, 'utf8')) }));n    return {n        totalLineCount: lineCounts.reduce((acc, { count }) => acc + count, 0),n        lineCounts,n    };n}nn/**n * @param {string} strn */nfunction getLinesLength(str) {n    return str.split('n').length;n}n", "result": "<<<<<<< uiaen>>>>>>> Stashed changes", resetResult: true, }, async model => { await model.mergeModel.reset(); assert.deepStrictEqual(model.getResult(), `const { readFileSync } = require('fs');nnlet paths = process.argv.slice(2);nrun(paths);nnfunction run(paths) {n    // print the welcome messagen    printMessage();nn    const data = getLineCountInfo(paths);n    console.log("Lines: " + data.totalLineCount);n}nnfunction printMessage() {n    console.log("Welcome To Line Counter");n}nn/**n * @param {string[]} pathsn*/nfunction getLineCountInfo(paths) {n    let lineCounts = paths.map(path => ({ path, count: getLinesLength(readFileSync(path, 'utf8')) }));n    return {n        totalLineCount: lineCounts.reduce((acc, { count }) => acc + count, 0),n        lineCounts,n    };n}nn/**n * @param {string} strn */nfunction getLinesLength(str) {n    return str.split('n').length;n}n`); } ); }); </ins> }); async function testMergeModel(

input2: string; base: string; result: string; <ins> resetResult?: boolean; </ins> } function toSmallNumbersDec(value: number): string {

resultTextModel, diffComputer, { <del> resetResult: false </del> <ins> resetResult: options.resetResult || false </ins> }, new MergeEditorTelemetry(NullTelemetryService), ));