LINUX.ORG.RU

Вопрос по git rebase

 ,


1

1

Я тут немного запустался в параметрах, а в особенности с тем, что git merge и git rebase должны делаться из разных бранчей... Я сделал так:

# git checkout master
# git rebase <feature_branch>
# git push
Как я понял, rebase я должен был сделать наоборот из <feature_branch> в master, т.е. git rebase master. push не выдал никаких ошибок, вероятно, потому, что никто не производил коммитов в master. Вопрос вот в чём: стоит ли по-хорошему откатиться и сделать правильно или я ничем не рискую, оставив всё как есть.

Перемещено tailgunner из development

★★★★★

Ответ на: комментарий от KennyMinigun

Все нормально. Rebase отработал как merge.

Ну я так понял в истории master переходит в feature. Т.е. это не критично?

UVV ★★★★★
() автор топика

В данном случае rebase только поменял ревизию ветки master, так что эта ветка теперь совпадает с <feature_branch>. Если вас это не устраивает, то сделайте мастером ревизию, которая была раньше, - вы получите то же, что было до rebase. А сам rebase из <feature_branch> в master в вашем случае (когда нет новых коммитов в мастере) вообще ничего не изменит.

Sorcerer ★★★★★
()
Ответ на: комментарий от user_id_68054

Fast forward очевидно произошло.

Да, оно было.

UVV ★★★★★
() автор топика
Ответ на: комментарий от Sorcerer

В данном случае rebase только поменял ревизию ветки master, так что эта ветка теперь совпадает с <feature_branch>.

Именно. Но feature_branch я потом удалил.

UVV ★★★★★
() автор топика
Ответ на: комментарий от UVV

Ну я так понял в истории master переходит в feature. Т.е. это не критично?

В git ветки не имеют истории. Так что не критично.

Sorcerer ★★★★★
()

git merge и git rebase должны делаться из разных бранчей...

Оба работают с текущей веткой. Только git merge branch сливает ветку branch с текущей веткой, а вот git rebase branch переносит текущую ветку поверх branch.

Рекомендую поставить gitk или любой другой визуальный инструмент и использовать его, чтобы смотреть на граф коммитов. Сначала попытайся представить этот граф, потом запускай gitk и проверяй.

i-rinat ★★★★★
()
Ответ на: комментарий от UVV

Т.е. это не критично?

Более того: разницы с merge в данном случае вообще не будет (в плане истории).

KennyMinigun ★★★★★
()
Ответ на: комментарий от i-rinat

а вот git rebase branch переносит текущую ветку поверх branch.

Кстати, «текущая ветка» в данном контексте — єто список коммитов которые отсутсвуют (по хешам) в ветке, на которую переносим.

KennyMinigun ★★★★★
()
Ответ на: комментарий от i-rinat

Рекомендую поставить gitk или любой другой визуальный инструмент и использовать его, чтобы смотреть на граф коммитов. Сначала попытайся представить этот граф, потом запускай gitk и проверяй.

На Bitbucket это всё отображается.

UVV ★★★★★
() автор топика

BTW, рекомендую как-нибудь попробовать поколупаться с интерактивным rebase: git rebase -i <tree-ish>. Как говорится — попробробовав раз, отказаться невозможно :)

KennyMinigun ★★★★★
()
Ответ на: комментарий от KennyMinigun

Как говорится — попробробовав раз, отказаться невозможно :)

Ну эту фразу не только в этом случае применяешься, как я понял... %)

UVV ★★★★★
() автор топика
Ответ на: комментарий от Sorcerer

Всем спасибо. Оставлю как есть, но на будущее учту.

UVV ★★★★★
() автор топика
Ответ на: комментарий от UVV

На Bitbucket это всё отображается.

На Bitbucket будет только то, что туда продавлено. Локальную структуру ты так не увидишь.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

А, это да. Понял, спс.

UVV ★★★★★
() автор топика
Ответ на: комментарий от KennyMinigun

git rebase -i

Ага, офигенная штука. Ещё неплохо в комплекте с --ignore-date работает.

Правда, есть косяк — кто-нибудь может сделать fixup у самого первого коммита, и это сработает.

i-rinat ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.