Я не совсем уверен, как выглядит ваше репо, но вот худший сценарий.
Предположим, ваш origin
репозиторий выглядит так
origin:
o---o---A---B---C master
А ваш локальный репозиторий выглядит так,
JimPuls:
o---o---A---B---C master, origin/master
\
D---E---F topic1
Затем, после переименования вашей ветки, ваш локальный репозиторий выглядит так:
JimPuls:
o---o---A---B---C old_master, origin/master
\
D---E---F master
Теперь, когда вы нажмете master
на origin
, это будет обновление без ускоренной перемотки вперед. После толчка репозиторий origin
будет выглядеть так:
origin:
o---o---A...B...C (B & C are orphaned commits)
\
D---E---F master
Это может быть жестоко по отношению к вашим друзьям, которые, возможно, совершали коммиты поверх C
. Например, если Салли работала с вами, ее хранилище может выглядеть так:
Sally:
o---o---A---B---C origin/master
\
G---H---I master
Теперь, если вы делаете толчок без ускоренной перемотки вперед, а Салли делает fetch
, ее репозиторий будет выглядеть так:
Sally:
D---E---F origin/master
/
o---o---A---B---C
\
G---H---I master
Теперь Салли должна выяснить, как вернуть свою работу (G, H, I) обратно в хранилище. Если она просто выполнит слияние с origin/master
, тогда изменения в B и C вернутся в хранилище (упс!). Вместо этого ей придется cherry-pick
или rebase
, чтобы ее G-H-I сменилась на origin/master
.
Круто, что Git позволяет тебе это делать, но это как бы напрашивается на неприятности. Вы действительно надеетесь, что Салли замечает ситуацию. Вот почему вы должны предупреждать всех других участников, когда вы делаете это, чтобы они могли соответствующим образом справиться с изменением.
ПРИМЕЧАНИЕ: Выше приведен сценарий наихудшего случая. Если ваша ветка topic1
вышла из master
в C, тогда это изменение будет ускоренной перемоткой вперед, и проблем не будет.