Git предотвращает нажатие после изменения фиксации

Обычно я запускаю

git add file
git commit
git push

но если я исправлю фиксацию до, нажав ее (с помощью git commit --amend), следующее нажатие завершится неудачей с помощью

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 нажимать изменения без объединения ветвей? У меня есть только одна ветка (master), и я единственный человек, использую этот репо, поэтому почему он говорит это?

git branch -a:

* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

EDIT: Используя gitk HEAD @{u}, я вижу, что у меня есть две ветки, одна с оригинальной фиксацией, а другая с измененной фиксацией.

Ответ 1

Это может произойти только в том случае, если вы исправляете уже нажатую фиксацию. Как правило, вы никогда не должны этого делать, так как вы изменяете опубликованную историю. Однако в вашем случае вы можете уйти с push -f, который перезапишет удаленный коммит с измененной версией.

Ответ 2

вы поменяли снятый фиксатор, как в

git pull origin master
git commit -a --amend -m "..."
git push

вы можете решить проблему, вернув исправленное сообщение:

git reset --mixed origin/master

а затем снова сделав его полноценной фиксацией

Ответ 3

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

Вместо этого вы можете отменить Git на предыдущую фиксацию без изменения файлов, а затем создать новую фиксацию:

git reset --mixed origin/master
git add .
git commit -m "This is a new commit for what I originally planned to be an amendmend"
git push origin master

это создаст новую фиксацию с изменениями, которые вы собираетесь изменить.