Редактирование сообщения git commit в GitHub


173

Есть ли способ онлайн-редактирования сообщения о коммите GitHub.comпосле отправки?

Из командной строки можно сделать

git commit --amend -m "New commit message"

как правильно предложено в другом вопросе .

Попытка, git pullа затем git pushсработало (без вмешательства других коммитов в это время).

Но можно ли это сделать через GitHubсайт?


Пожалуйста , смотрите @ DanGreen-Leipciger в ответ , даже если он не является принятым один.
RBT

Ответы:


101

Нет, это невозможно напрямую. Хеш для каждого коммита Git также рассчитывается на основе сообщения коммита. Когда вы изменяете сообщение о коммите, вы меняете хэш коммита. Если вы хотите нажать этот коммит, вы должны форсировать его (git push -f). Но если кто-то уже вытянул ваш старый коммит и начал работу, основанную на этом коммите, ему пришлось бы переназначить свою работу на ваш новый коммит.


Я также мог сделать git pull, а затем git push, и это сработало. Но, видимо, нет онлайн-способа.
PNS

По состоянию на 5 апреля 2016 года все еще не возможно
bigT

И я думаю, что это не будет высокоприоритетным, поскольку вы бы изменили историю коммитов уже опубликованной ветки, что вам никогда не следует делать (за исключением случаев, когда вы уверены на 200%, что никто не имеет этой ветки на своей локальной машине).
dunni

Это только наполовину правда. Это правда, но только с предположениями. Ответ был бы лучше, если бы он сочетался с ответом @DanGreen (ниже). Это не «прямо возможно», и, конечно, оно идет с предупреждениями (то есть: «вы не должны« никогда »делать это ... [кроме случаев, когда вы уверены, что хотите]») - но просто сказать, что это не так возможно, когда это технически возможно, это неполный ответ.
Бэйн

1
ОП спросил, возможно ли сделать это онлайн на веб-сайте Github. AFAIK это все еще не возможно. Так что мой ответ действителен, и ответ Дана Грина описывает только то, как это сделать локально, а не на сайте Githubs.
Данни

145

Инструкции GitHub для этого:

  1. В командной строке перейдите в репозиторий, содержащий фиксацию, которую вы хотите изменить.
  2. Введите git commit --amendи нажмите Enter.
  3. В текстовом редакторе отредактируйте сообщение о коммите и сохраните его.
  4. Используйте git push --force example-branchкоманду, чтобы принудительно переместить старый коммит.

Источник: https://help.github.com/articles/changing-a-commit-message/


11
БЫТЬ ОСТОРОЖЕН! Разница между использованием <git commit --amend> & <Enter> и <git commit --amend -m "new commit message"> заключается в том, что в первом случае вы редактируете ваше сообщение коммита в текстовом редакторе & во 2-й вы замените его «новым сообщением о коммите». Если вы нажмете толчок, это заменит коммит на вашем пульте. Это НЕ решает проблему, заключающуюся в том, что если другие члены вашей команды извлекли предыдущий коммит, у вас теперь разные истории (включая разные коммиты) на разных машинах. Если вы знаете, что никто не потянул ваш коммит, это безопасно. Читайте источник Дан опубликовал
TMin

7
git commit --amendвсегда существовал. Кроме того, вы путаетесь между git (который является инструментом командной строки с открытым исходным кодом) и Github (который является компанией, предоставляющей хостинг с исходным кодом в Интернете).
vinyll

1
ОП спрашивал о GitHub, и особенно о том, когда коммит был перенесен на их серверы. Это инструкции GitHub для выполнения того, о чем спрашивал OP.
Дэн Грин-Лейпцигер

3
@ DanGreen-Leipciger - да, но это не делается на самом сайте, это делается с помощью командной строки. Я считаю, что PNS хотел сделать это из веб-интерфейса.
PhistucK

2
ОП спросил, как это сделать с GitHub, в частности, как это сделать с GitHub.
Дэн Грин-Лейпцигер

30

Вы должны git push -fпредположить, что никто не тянул другой коммит раньше. Осторожно, ты меняешь историю.


3

Нет, потому что сообщение фиксации связано с коммитом SHA / хешем, и если мы его изменим, коммит SHA также будет изменен. Я использовал способ создать комментарий к этому коммиту. Я не могу думать иначе.


2

Для пользователей Intellij: Если вы хотите вносить изменения в интерактивном режиме для прошлых коммитов, которые не выдвигаются, выполните следующие шаги в Intellij :

  • Выберите контроль версий
  • Выберите журнал
  • Щелкните правой кнопкой мыши на коммите, для которого вы хотите изменить комментарий
  • Нажмите перефразировать
  • Готово

Надеюсь, поможет


0

Я столкнулся с той же проблемой.

Посмотрите в своем github конкретную ветку, и вы узнаете идентификатор коммита самого первого коммита в этой ветке. сделайте ребаз к этому:

git rebase -i

редактор откроется. Сделайте трек ваших коммитов из github UI и открытого редактора и измените сообщения.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.