Как изменить только сообщение о фиксации коммита в ветке с существующим запросом на извлечение

#git #github

#git #github

Вопрос:

Как я могу изменить и отправить только сообщение о фиксации уже отправленного коммита github.com в ветке с существующим запросом на извлечение?Я попытался использовать git commit --amend followed by git push origin BRANCH .

 error: failed to push some refs to 'https://github.com/x/y'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
  

Что я должен использовать git pull перед использованием git push ?

Комментарии:

1. Вероятно, этот вопрос является дубликатом чего-то, что уже существует в Stack Overflow, кто-то должен прийти и пометить его как дубликат позже.

2. Обычно я бы сказал, что вам нужно принудительно нажать, но сообщение об ошибке, которое вы получаете, предполагает, что кто-то, возможно, отправил дополнительные коммиты в вашу удаленную ветку? Это правда? Есть ли другие люди, работающие с вами над веткой, и отправили ли они новые коммиты в эту ветку? Если нет, то да, определенно принудительный push. В противном случае вам нужно будет интегрировать удаленные изменения в свою собственную ветку, что может быть немного сложнее, поскольку вы переписали один из старых коммитов, который будет содержать удаленная ветка, поэтому вы не хотите снова объединять этот старый коммит локально.

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

Ответ №1:

Git не позволяет вам отправлять исправленный коммит в качестве функции безопасности, чтобы предотвратить случайную перезапись неизмененной версии на GitHub.

Но в этом случае вы действительно хотите перезаписать этот старый коммит, поэтому вам нужно принудительно нажать:

 git push origin <branch> --force
# Or
git push origin <branch> -f
  

Ответ №2:

Как упоминалось Cupcake, необходимо принудительно git push . Используя следующие команды, я успешно отправил измененное сообщение о фиксации в свою ветку на Github, и измененное сообщение появилось непосредственно в открытом запросе на извлечение.

 git clone https://github.com/berendt/docker
git checkout -b opensuse_import_public_gpg_key origin/opensuse_import_public_gpg_key
git commit --amend
git push --force origin