Как мне отправить исправленный коммит в удаленный репозиторий Git? - PullRequest
586 голосов
/ 31 октября 2008

Когда я немного поработал с исходным кодом, я сделал свой обычный коммит, а затем отправил в удаленный репозиторий. Но потом я заметил, что забыл организовать импорт в исходном коде. Поэтому я выполняю команду исправления для замены предыдущего коммита:

> git commit --amend

К сожалению, фиксация не может быть перенесена обратно в хранилище. Отклонено так:

> git push origin
To //my.remote.repo.com/stuff.git/
 ! [rejected]        master -> master (non-fast forward)
error: failed to push some refs to '//my.remote.repo.com/stuff.git/'

Что мне делать? (Я могу получить доступ к удаленному хранилищу.)

Ответы [ 14 ]

2 голосов
/ 18 января 2016

Вот очень простой и понятный способ отправить ваши изменения после того, как вы уже сделали git add "your files" и git commit --amend:

git push origin master -f

или

git push origin master --force
1 голос
/ 02 декабря 2016

Я просто продолжал делать то, что сказал мне Гит. Итак:

  • Невозможно нажать из-за исправленного коммита.
  • Я делаю тягу, как предложено.
  • Слияние не удалось. поэтому я исправляю это вручную.
  • Создать новый коммит (помечен "объединить") и нажать его.
  • Кажется, работает!

Примечание: исправленный коммит был последним.

1 голос
/ 31 октября 2008

Мне пришлось решить эту проблему с извлечением из удаленного репо и обработать конфликты слияния, которые возникли, зафиксировать, а затем протолкнуть. Но я чувствую, что есть лучший способ.

0 голосов
/ 13 марта 2019

Вот, как я исправил редактирование в предыдущем коммите:

  1. Сохраните свою работу.
  2. Сохраните ваши изменения на время, если они сделаны: git stash Теперь ваша рабочая копия чиста в состоянии вашего последнего коммита.
  3. Внесите исправления и исправления.
  4. Зафиксировать изменения в режиме «изменить» : git commit --all --amend
  5. Ваш редактор будет запрашивать сообщение журнала (по умолчанию старое сообщение журнала). Сохраните и выйдите из редактора, когда вы довольны им.

    Новые изменения добавляются в старый коммит. Убедитесь сами с git log и git diff HEAD^

  6. Повторно примените ваши скрытые изменения, если были сделаны: git stash apply

...