Чому я не можу натиснути порожню команду?


35
  git commit --amend --allow-empty

потім

  git push origin master

git сказав, що

! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'remoteurl'
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.

Чому? Як це виправити?

git 

Відповіді:


56

Проблема полягає не в тому, що ви натискаєте на порожню комісію.
Йдеться про виштовхування іншого комітету (одного з іншим SHA1), ніж того, який вже виконується.
Це те, що git commit --amendробить: він змінив останній комітет, він не створює нового.

Це означає, що ви просуваєте іншу історію, ніж та, яку інші, можливо, вже клонували.
Якщо ви впевнені, що це не буде проблемою, вам потрібно змусити натиснути:

git push -f origin master

Якщо ви зробили це:

git commit --allow-empty

Ви створили б нову (порожню) комісію, яку ви могли б просунути без жодних проблем.


5

Якщо ви хочете створити запит на тягу в Github. Ти можеш:

git commit --allow-empty -m "make pull request"

Потім створіть запит на тягу без змін.


3

Щоб уточнити прийняту відповідь, оскільки мені не вистачає репутації для коментарів:

Коли ви користуєтесь

git commit --amend

це робить створення нового коммітов. Однак він не додає його до поточного комітету, він додає його до батьківського складу поточного комітету. Візуально це буде виглядати як виделка.

  O (old commit)
 /
O-O (amended commit)

Гіт трактує це як розбіжність із віддаленим. Ось чому це не дозволить вам натиснути його, не примушуючи.


0

Переконайтесь, що віддалене відділення, на яке ви намагаєтеся натиснути, наразі не перевірено. Я створив сховище git на одному з моїх серверів один раз і не міг зрозуміти, чому я не можу натиснути на нього. Через день або близько усунення несправностей я виявив, що не можу перейти до сховища (або до гілки, яку я хотів), поки він був перевірений у сховищі сервера. Отже, я просто створив нову гілку, яку перевіряю, коли закінчу внесення змін на сервері, і потім можу натиснути на сервер. Це може бути не вашою проблемою, але я отримав помилку, подібну до цієї, коли у мене виникла проблема, що надсилається на порожній git на моєму сервері.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.