Когда вы изменяете выданный коммит, вы переписываете свою локальную историю, заменяя старый коммит новым, то есть новый коммит будет иметь того же родителя, что и старый.
До:
x---x---P---O <--- master, origin/master
После изменения:
x---x---P---A <--- master
\
+-O <--- origin/master
При переводе этого состояния в исходное состояние git обнаруживает, что ваша (локальная) ветвь является одним коммитом за удаленным репо,старая фиксация и прерывается.
Чтобы переписать историю на удаленном репо, вам необходимо принудительно принудительно отправить исходную копию
git push --force origin
После принудительной отправки --force:
x---x---P---A <--- master, origin/master
Теперь все, что вам нужно сделать, это иметь дело с товарищами по команде, которые уже вытянули старый коммит.
Эта часть может быть неполной, но в некоторых ситуациях нам было достаточно.Те, у кого нет локальных коммитов, могут получить и сбросить свою локальную ветку master
на новую origin/master
git fetch
git checkout master
git reset --hard origin/master
Любой, у кого есть локальные изменения, основанные на старой фиксации, может спрятать или зафиксироватьв локальный филиал (временный филиал, из которого они могут выбирать локальные коммиты), прежде чем они получат и сбросят данные.