webentwicklung-frage-antwort-db.com.de

Git verhindert das Pushen nach dem Ändern eines Commits

Normalerweise renne ich einfach

git add file
git commit
git Push

aber wenn ich das Commit ändere vorher drücke ich es (mit git commit --amend) schlägt der nächste Push mit fehl

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.

Wie kann ich git die Änderungen pushen lassen, ohne die Zweige zusammenzuführen? Ich habe nur einen Zweig (master) und ich bin die einzige Person, die dieses Repo benutzt. Warum sagt es das?

git Branch -a:

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

BEARBEITEN: Mit gitk HEAD @{u}, Ich sehe, dass ich 2 Zweige habe, einen mit dem ursprünglichen Commit und einen anderen mit dem geänderten Commit.

38
kiri

Dies sollte nur der Fall sein, wenn Sie ein bereits übertragenes Commit ändern. Im Allgemeinen sollten Sie dies niemals tun, da Sie dann den veröffentlichten Verlauf ändern. In Ihrem Fall sollten Sie jedoch in der Lage sein, mit Push -f Davonzukommen, wodurch das Remote-Commit mit Ihrer geänderten Revision überschrieben wird.

57
Joey

Ja, das sollten Sie nicht tun (ein Commit drücken, dann ändern und erneut versuchen, es zu pushen).

Stattdessen können Sie Git auf Ihr vorheriges Commit zurücksetzen, ohne die Dateien zu ändern, und anschließend ein neues Commit erstellen:

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

dadurch wird ein neues Commit mit den Änderungen erstellt, die Sie gerade ändern wollten.

13
Nils Werner

sie haben das Pulled Commit wie in geändert

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

sie können das Problem beheben, indem Sie das geänderte Commit zurücksetzen:

git reset --mixed Origin/master

und es dann wieder als vollwertiges Commit machen

8
Stefano Falasca