Git - нужны пояснения по поводу ребаз - PullRequest
1 голос
/ 22 сентября 2011

Я попробовал Google, без помощи.

У меня есть активный проект для ОС, который продолжает обновляться с хорошими вещами, и я развиваюсь поверх него,

Допустим, я получил git-репозиторий проекта (давайте назовем текущее состояние x) и текущий статус:

ОС проекта

x

мой проект (добавлено несколько изменений)

x -> y

Обновлен проект ОС:

x -> z

и я не хочу, чтобы мой проект содержал z и выглядел как

x -> z -> y

или

z -> y

Может кто-нибудь объяснить, как мне это сделать?

Ответы [ 2 ]

2 голосов
/ 22 сентября 2011

Простой метод заключается в использовании следующих двух команд (после того, как вы скомпоновали или зафиксировали свои изменения):

$ git fetch origin master
$ git rebase FETCH_HEAD

Первая извлекает изменения в исходном хранилище из удаленного файла с именем origin,Второй переносит ваши изменения в новый удаленный HEAD.

Здесь важно отметить, что вы используете git fetch, а не git pull.Последний - fetch, за которым следует автоматический merge.Вам это не нужно.

Если вы ищете альтернативный метод, я всегда работаю над отдельной веткой.Тогда я могу сохранить master равным версии сопровождающего и продолжать перебазировать мою параллельную ветвь.Если в моей ветке есть другие пользователи, вместо этого я объединяю мастера.

1 голос
/ 22 сентября 2011

Предполагая, что x, y и z являются ветвями (а x и z на самом деле являются одной и той же ветвью), и вы отметили y, вы должны сделать следующее:

git rebase z

Это повторяет все ваши коммиты с момента, когда y был создан, поверх z, чтобы создать для вас новый y. Обратите внимание, что вы меняете историю, когда вы делаете это. То есть все SHA ваших коммитов на y перед ребазой изменены. Это не проблема, если вы единственный, кто работает над вами. Если вы работаете в команде, и несколько человек взяли на себя обязательства по y, то перебазировка может быть плохой идеей. В этом случае вы можете объединить от z до y. Это достигает вашей цели без изменения истории.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...