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

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

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

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

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

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

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


person PNS    schedule 23.05.2012    source источник
comment
См. ответ @DanGreen-Leipciger, даже если он не принят.   -  person RBT    schedule 12.01.2018


Ответы (8)


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

person dunni    schedule 23.05.2012
comment
Я также мог сделать git pull, а затем git push, и это сработало. Но, видимо, нет онлайн-способа. - person PNS; 24.05.2012
comment
Все еще невозможно по состоянию на 5 апреля 2016 г. - person solimant; 05.04.2016
comment
И я предполагаю, что это не будет высоким приоритетом, так как вы изменили бы историю коммитов уже опубликованной ветки, чего вы никогда не должны делать (кроме случаев, когда вы на 200% уверены, что ни у кого больше нет этой ветки на его локальной машине). - person dunni; 05.04.2016
comment
Это только половина правды. Это правда, но только с предположениями. Ответ был бы лучше, если бы он был объединен с ответом от @DanGreen (ниже). Это невозможно напрямую, и, конечно же, это сопровождается предупреждениями (т. е. вы «никогда» не должны этого делать... [кроме случаев, когда вы уверены, что хотите этого]) — но просто сказать, что это невозможно, когда это технически возможно, является неполным ответом. - person Bane; 31.05.2018
comment
ОП спросил, можно ли это сделать онлайн на сайте Github. AFAIK это все еще невозможно. Так что мой ответ действителен, а ответ Дэна Грина касается только того, как это сделать локально, а не на сайте Githubs. - person dunni; 31.05.2018

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

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

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

person Dan Green-Leipciger    schedule 06.01.2017
comment
Что означает перейти к репозиторию? Для меня коммит находится в ветке вместе с другими коммитами. И теперь я все толкнул, так что мое рабочее место чистое. Как мне туда попасть, чтобы изменить сообщение? Извините - я новичок в этом. - person pgr; 06.03.2017
comment
Это значит зайти в папку в среде *nix. т.е. если ваше репозиторий называется bar и находится в каталоге с именем foo, который находится в корневом каталоге вашей машины, откройте терминал и введите cd /foo/bar. Теперь вы готовы к шагу 2 - person Dan Green-Leipciger; 06.03.2017
comment
БУДЬ ОСТОРОЖЕН! Разница между использованием ‹ git commit --amend › & ‹ Enter › и ‹ git commit --amend -m новое сообщение фиксации › заключается в том, что в первом случае вы редактируете сообщение фиксации в текстовом редакторе и в 2-й замените его новым сообщением фиксации. Если вы принудительно нажмете, это заменит фиксацию на вашем пульте. Это НЕ решает проблему, заключающуюся в том, что если другие люди в вашей команде вытащили предыдущую фиксацию, у вас теперь будут разные истории (включая разные фиксации) на разных машинах. Если вы знаете, что никто не вытащил ваш коммит, это безопасно. Читать источник, опубликованный Дэном - person TMin; 16.03.2017
comment
git commit --amend существовал всегда. Также вы путаетесь между git (это инструмент командной строки с открытым исходным кодом) и Github (компания, предоставляющая онлайн-хостинг). - person vinyll; 28.04.2017
comment
ОП спросил о GitHub и, в частности, о том, что фиксация была отправлена ​​на их серверы. Это инструкции GitHub для выполнения того, о чем спрашивал ОП. - person Dan Green-Leipciger; 29.04.2017
comment
@DanGreen-Leipciger - да, но это делается не на самом сайте, а с помощью командной строки. Я думаю, что PNS хотела сделать это из веб-интерфейса. - person PhistucK; 23.06.2017
comment
ОП спросил, как это сделать конкретно с GitHub, вот как это сделать конкретно с GitHub. - person Dan Green-Leipciger; 23.06.2017
comment
так что мы можем изменить последний коммит, только если я хорошо понимаю? - person Webwoman; 14.09.2018
comment
Правильно, изменение обновляет предыдущую фиксацию тем, что вы подготовили, а также новым сообщением. Если вы хотите изменить старое сообщение фиксации, вы можете выполнить интерактивную перебазировку и пометить фиксацию как измененную с помощью r. Вам будет предложено изменить его на следующем экране. - person Dan Green-Leipciger; 14.09.2018

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

person three    schedule 23.05.2012

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

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

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

person Saurabh Valsangkar    schedule 13.08.2019

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

person Prabowo Murti    schedule 15.04.2013

Для пользователей Android Studio/intellij:

  • Выберите контроль версий
  • Выберите журнал
  • Щелкните правой кнопкой мыши фиксацию, для которой вы хотите переименовать
  • Нажмите Изменить сообщение фиксации.
  • Напишите сообщение о коммите
  • Сделанный
person Mohamed AbdelraZek    schedule 22.11.2020

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

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

git перебазировать -я

откроется редактор. Отслеживайте свои коммиты из пользовательского интерфейса github и открытого редактора и меняйте сообщения.

person Priya Jain    schedule 15.08.2016

Меня попросили изменить сообщение о коммите патча, которое я отправил на github (и оказался здесь). Это то, что я сделал, чтобы выполнить свою работу.

git clone [email protected]:YOURNAME/EXAMPLE.git; cd EXAMPLE; git fetch --all; git pull --all
git checkout -b patch-2 origin/patch-2 # create local patch-2 branch
git commit --amend # update the commit message
git push -f

Это работает для последней фиксации в ветке. Если рассматриваемая фиксация глубже, вам нужно будет сделать что-то более сложное. (Я не знаю, нужны ли выборка и вытягивание, но я просто пропустил эту строку, пока работаю над чем-то другим, чтобы сэкономить время.)

person Alexx Roche    schedule 08.04.2021