web-dev-qa-db-fra.com

Git empêche de pousser après avoir modifié un commit

Habituellement, je cours juste

git add file
git commit
git Push

mais si je modifie le commit avant le poussant (avec git commit --amend), le prochain push échoue avec

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.

Comment laisser git pousser les modifications sans fusionner les branches? Je n'ai qu'une seule branche (master) et je suis la seule personne à utiliser ce dépôt, alors pourquoi dit-il cela?

git branch -a:

* master
  remotes/Origin/HEAD -> Origin/master
  remotes/Origin/master

EDIT: à l'aide de gitk HEAD @{u}, Je vois que j'ai 2 branches, une avec le commit d'origine et l'autre avec le commit modifié.

38
kiri

Cela ne devrait être le cas que si vous modifiez un commit déjà poussé. En règle générale, vous ne devriez jamais faire cela car vous modifiez alors l'historique publié. Dans votre cas cependant, vous devriez pouvoir vous en sortir avec Push -f, qui écrasera le commit distant avec votre révision modifiée.

57
Joey

Oui, vous ne devriez pas faire ça (pousser un commit, puis le changer et essayer de le pousser à nouveau).

Au lieu de cela, vous pouvez restaurer Git à votre commit précédent sans modifier les fichiers, puis créer un nouveau commit:

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

cela va créer un nouveau commit avec les changements que vous étiez sur le point de modifier.

13
Nils Werner

vous avez modifié le commit tiré comme dans

git pull Origin master
git commit -a --amend -m "..."
git Push

vous pouvez résoudre le problème en annulant le commit modifié:

git reset --mixed Origin/master

puis le faire à nouveau comme un engagement à part entière

8
Stefano Falasca