Похоже, вы основали свою ветку code2
на code1
вместо master
. Когда вы это сделали, вы включили весь код, который был в этой ветке на тот момент, включая code1.java
.
Когда вы слились code2
, Git рассмотрел только три точки для слияния: основа слияния (коммит 2) и две головы. Поскольку файл не изменился с одной стороны (фиксация 6), а с другой стороны произошла модификация (удаление), Git применил модификацию и удалил файл.
В этом случае было нормально, что code2
содержал code1.java
, потому что он был основан на ветке, в которой он содержался: это не было посторонним изменением, которое вы включили. Удалив его, вы фактически внесли постороннее изменение - удаление, которое было противоположным тому, что вы намеревались.
Самым простым способом избежать этого всегда является ветвление master
при работе над проектом, что означает, что вам не придется удалять посторонние вещи. Если вы случайно основали другую ветку, вы можете сделать git rebase --onto master code1
, которая возьмет вашу ветку из code1
и вместо этого поместит ее в master
. Затем вы можете проверить его, чтобы увидеть, нужно ли вам добавлять или удалять вещи в будущем.