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
это создаст новую фиксацию с изменениями, которые вы собираетесь изменить.