изменилось сообщение о коммите в gitlog, но не в github - PullRequest
1 голос
/ 31 декабря 2011

Я выполнил шаги из Изменить старое сообщение о коммите на Git , и я подтвердил, что сообщение о коммите обновлено в git log.Но когда я нажимаю вкладку «История коммитов» в Github, я все еще вижу старое сообщение и старый SHA-1.

Итак, я слепо пробовал git push origin master, но это не удалось с:

To git@github.com:foobar.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:foobar.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git push --help' for details.

Ошибка говорит мне «объединиться с удаленными изменениями перед повторным нажатием», но это кажется неправильным: объединение нового материала в исправленный коммит (из более старой базы).Я в замешательстве.

Как я могу отправить свое исправленное сообщение?

Ответы [ 2 ]

3 голосов
/ 31 декабря 2011

если вы переписываете историю, вам нужно позвонить:

git push --force
1 голос
/ 31 декабря 2011

Как говорит @xsace, вы переписываете историю здесь.

Коммит в git связан с несколькими вещами:

  • метаданные фиксации (автор, коммиттер, метки времени, коммитсообщение);
  • родительский коммит (или commit_s_, если это слияние);
  • дерево.

Если вы изменили какой-либо из них, и вы сделализдесь (вы изменили сообщение коммита), ваша история и github (или любой другой удаленный в этом отношении) расходятся:

[parent]----[master@github]
    \
     \------[your local master]

Здесь вы хотите нажать yourlocalmaster на github, но это не fast forward , то есть текущая главная голова на github не является непосредственным родителем вашего коммита.Поэтому вам нужно принудительно нажать.

Это также можно сделать с помощью git push github +master.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...