LINUX.ORG.RU

git: автоматический rebase веток после изменения родительских коммитов

 ,


1

1

Имеется следующая история:

* 6061a01 (b2) b2
| * 6093c87 (b1) b1
|/  
* ca8354f (HEAD, master) c1
* b3d1539 Init

После того, как я изменил сообщение коммита ca8354f с помощью git rebase -i, получил следующее:

* 05ffbac (HEAD, master) commit 1
| * 6061a01 (b2) b2
| | * 6093c87 (b1) b1
| |/  
| * ca8354f c1
|/  
* b3d1539 Init

Как сделать так, чтобы на место ca8354f встал 05ffbac? Первое, что приходит в голову, ребейзнуть все ветки (git checkout branch-name && git rebase master) и это работает.

* 0ebddf0 (b2) b2
| * d2365a1 (b1) b1
|/  
* 05ffbac (HEAD, master) commit 1
* b3d1539 Init

Но можно ли сделать так, чтобы ветки перебазировались автоматически?

★★★★★

1. rebase - это костыль для любителей CVS

2. за переписывани истории, от которой что-то уже зависит, в приличном обществе бьют канделябром

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

Понятно, что переписывание истории, доступной публично — зло. Но если я ещё не успел поделится с обществом?

А по поводу первого, можно по подробнее?

Kilte ★★★★★ ()

Теоретически можно написать скрипт, который будет отслеживать такие изменения, и автоматически делать rebaseб но в случае конфликтов их все-равно придется разрешать вручную. ИМХО, проще сразу вручную делать. Не такая уж и частая ситуация. А если частая, то нужно подучать что не так в вашем подходе.

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

rebase необходим тем, кто привык к линейной истории и считает это единственным способом. git позволяет работать с фактической историей, которая при наличии веток или нескольких разработчиков изначально нелинейна.

anonymous ()

Всем спасибо. На самом деле мне это не нужно. Никогда не сталкивался с такой ситуацией и вряд ли бы это когда-нибудь произошло. Случайно узнал об этой «проблеме» и стало интересно, может ли гит разруливать такие ситуации самостоятельно или нет.

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