Я не совсем уверен, как выглядит ваше репо, но вот наихудший сценарий.
Предположим, что ваш репозиторий 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, то это изменение является перемоткой вперед, и проблем не возникает.
person
Pat Notz
schedule
01.04.2009