Git пропустил ребаз для расширенной ветки разработки? - PullRequest
1 голос
/ 13 июля 2011

Несколько месяцев назад я отделился от основной ветки разработки в проекте, над которым я работаю. Я работал над своей собственной веткой эксперимента, но постоянно вносил изменения из мастера, чтобы идти в ногу со временем. Каждый раз, когда я это делал, я использовал этот набор команд

git checkout master
git pull
git checkout experiment
git merge master

Сегодня я пошел, чтобы слить ветку эксперимента обратно в мастер. Я просто убедился, что все в курсе с мастером, и позвонил

git checkout master
git merge experiment

Когда я смотрю в GitX на ветку master, она показывает отдельную линию разработки для того, что похоже на каждый раз, когда я вытаскивал из master, чтобы держать себя в курсе. Это потому, что я должен был перебазировать мастера, когда вытащил изменения?

У кого-нибудь есть достойное решение, чтобы это исправить? Я думаю, я мог бы перенести эксперимент на мастера? Но эксперимент - это довольно ветвь, и я бы хотел, чтобы она была очевидной отдельной ветвью в истории. Есть ли способ для меня вернуться и перебазировать старые проблемные слияния? Я довольно новичок в Git, как вы, вероятно, можете сказать.

Спасибо!

1 Ответ

1 голос
/ 13 июля 2011

Точно.

Когда вы выполняете слияние, у вас фактически есть один коммит с двумя родителями, что происходит так:

оригинальная история:

A <- B <- C

вы что-то изменили (X и Y)

A <- B <- C <- X <- Y 

вы извлекли из отслеженного хранилища (при условии, что кто-то добавил D и E)

A <- B <- C <- D <- E
           ^
            \- X <- Y

и затем вы объединились:

A <- B <- C <- D <- E <- M
           ^             /
            \- X <- Y <-/

Вот почему вы видите эти "отдельные линии"

В случае ребазирования это выглядит примерно так:

вы извлекли из отслеженного хранилища (при условии, что кто-то добавил D и E)

A <- B <- C <- D <- E
           ^
            \- X <- Y

Вы перебазируете (что означает, что GIT снова применяет ваши изменения X, Y)

A <- B <- C <- D <- E <- X' <- Y'

(ревизия X и Y отменены)

что я считаю, это то, что вам нравится видеть

...