Hello Git developers,
I would like to report a potential issue in Git's merge behavior, where changes from one branch may be lost even when the other branch does not modify the same location.
Environment: - git version: 2.43.0 - OS: Ubuntu 24.04 LTS
Steps to reproduce: 1. On branch A, modify a file at a certain location:
@@ -1026,7 +1028,9 @@
public final class AutoBuilderCompilationTest {
" }",
"}");
Compilation compilation =
- javac().withProcessors(new AutoBuilderProcessor()).compile(javaFileObject);
+ javac()
+ .withProcessors(new AutoBuilderProcessor())
+ .compile(javaFileObject);
assertThat(compilation).failed();
assertThat(compilation)
.hadErrorContaining(2. On branch B, make no changes to this location.
3. Merge branch A and branch B.
Expected result: - The merge should retain the changes made in branch A:
@@ -1026,7 +1028,9 @@
public final class AutoBuilderCompilationTest {
" }",
"}");
Compilation compilation =
- javac().withProcessors(new AutoBuilderProcessor()).compile(javaFileObject);
+ javac()
+ .withProcessors(new AutoBuilderProcessor())
+ .compile(javaFileObject);
assertThat(compilation).failed();
assertThat(compilation)
.hadErrorContaining(Actual result: - Git sometimes produces a merged result where the modification from branch A is lost, yielding:
@@ -1026,7 +1028,9 @@
public final class AutoBuilderCompilationTest {
" }",
"}");
Compilation compilation =
javac().withProcessors(new AutoBuilderProcessor()).compile(javaFileObject);
assertThat(compilation).failed();
assertThat(compilation)
.hadErrorContaining(Additional information: - This issue occurs even when the other branch (B) does not modify the same location. - It appears to happen non-deterministically and may lead to subtle bugs in real-world merges.
Thanks, Cori