Работая над проектом, мы испортили синхронизацию при переключении между ветками. Сначала была одна функциональная ветвь foo
, которая была перебазирована на master, однако локально master не синхронизировался, поэтому при перемещении в новую ветку bar
все коммиты из предыдущего были добавлены в новую ветвь как Что ж. Git-дерево выглядит примерно так:
Master => A--B--C--D--E--Merge
\-C--D--E-/-F--G--H <= Bar
Foo
Моя цель - полностью удалить foo
, поскольку он уже перебазирован в мастер и имеет что-то вроде:
Master => A--B--C--D--E
\-F--G--H <=Bar
EDIT:
Так что, похоже, это более грязно, чем я учил. Кроме того, я не настолько разбираюсь в git и не могу сделать вывод, что именно произошло. Сейчас я расскажу как можно подробнее.
Товарищ по команде и я работаем над проектом. Для реализации одной функции мы создали отдельную ветку foo
.
A -- B <-- (master)
\
C -- D -- E <-- (foo)
После завершения функции я изменил foo
до master
. И дерево теперь выглядело так:
A -- B -- C -- D -- E <-- (master)
Необходимо реализовать новую функцию, и, таким образом, открылась новая ветка bar
.
A -- B -- C -- D -- E <-- (master)
\
F -- G -- H <-- (bar)
Это все с моей стороны. Теперь товарищ по команде выдвинул свой код, и я предполагаю, что он не синхронизировал некоторые ветви, и, кроме того, имелись некоторые конфликты, которые требовали слияния, но в итоге дерево git выглядит так:
A -- B -- C -- D -- E <-- (master)
\ | \
C -- D -------- M1 ------ M2 -- I <-- (bar)
\ /
F -- G -- H
Где:
- M1 указано: объединить
master
в foo
- M2 указано: объединить
bar
в foo
I
это коммит нового партнера по команде
Кроме того, меня немного смущает сообщение в M2, так как тогда это означает, что у нас осталось foo
в конце, но наше дерево имеет только bar
.
Я попытался, как предложил @Mark Adelsberger, запустить git rebase master bar
, но у меня сразу же возникли конфликты слияния при коммите C
, и я прервал перебазирование. Согласно ответу, он должен автоматически решить, что оба эти C
s - то же самое принятие, и пропустить их, но это не имело место.
Моя цель состоит в том, чтобы сгладить дерево, если это возможно, то есть избавиться от C
и D
в bar
ветви и, возможно, объединить или поместить F
, G
и H
в одно и то же строка как M1
, M2
и I
.
Возвращаясь к вопросу, я вижу, что в моем первом посте не хватало деталей. Надеюсь, эта редакция прояснит проблему, с которой я сталкиваюсь.