2016-07-06 22 views
1

Ich machte drei Commits zu einem Zweig und schob jeden von ihnen zu remote. Ich brauchte dann die Festschreibungen zu quetschen, so dass ich verwendet:Drücken Sie auf remote-Zweig Fehler nach quetschen lokalen commits

git reset --soft HEAD~3 && git commit 
git push --force 

An der zweiten Linie, bekam ich einen fatalen Fehler:

The current branch [BRANCH-NAME] has no upstream branch. 
To push the current branch and set the remote as upstream. 

ich mit git push --set-upstream origin [BRANCH-NAME] sein empfohlenes Befehl versucht, aber wird erzählt, daß Die Spitze des aktuellen Zweigs befindet sich hinter dem entfernten Gegenstück. Rückblickend macht es Sinn, da ich mich momentan auf Index 1 meiner lokalen Filiale befinde, während der Kopf auf Index 3 auf der Fernbedienung steht.

Was ich jetzt tun möchte, ist im Grunde zu haben, die zerquetschte Version der Verzweigung (die ich lokal habe) die nicht gequetschte Version zu ersetzen, die in der Fernbedienung ist. Was ist der richtige Ansatz hier?

Ich habe this und ein paar andere angesehen, aber sie haben nicht geholfen.

Antwort

2

Sie müssen --force hinzufügen auf das Kommando vorgeschlagen:

git push --set-upstream --force origin [BRANCH-NAME] 

Nachdem Sie es mit --set-upstream laufen haben, werden Sie in der Lage sein, nur git push eingeben (oder git push -f soweit erforderlich) von da an.

+0

Der Force Push wird nichts außerhalb dieses Zweiges beeinflussen, oder? Ich bin die einzige Person, die an diesem Zweig arbeitet, aber es gibt eine Menge Leute, die an dem Meister arbeiten und ich möchte nichts von ihrer Arbeit beeinflussen. – NeonBlueHair

+0

Nein, weil Sie den Zweignamen angeben, ist dies der einzige, der gepusht wird. Geben Sie einfach nicht Master als Zweigname ein;) – jonnystoten

+0

Sieht so aus, als hätte es funktioniert. Es war ein Lebensretter, vielen Dank! – NeonBlueHair

0

Sie müssen den Git-Verlauf neu schreiben, da diese Änderungen an Remote übergeben wurden. Vermeiden Sie es im Allgemeinen, den Verlauf neu zu schreiben, es sei denn, Sie müssen dies unbedingt tun. Triviale Commits zu haben ist kein Grund, Push-Commits zu zerquetschen. Wenn sie bleiben können, lass sie bleiben.

Für die Git-Remote-Repo, wenn Sie fortfahren möchten - ich nehme an, Sie wissen, um die Commits auf Ihrem lokalen Repo (Git Rebase -I ist einfach) zu quetschen. Drücken Sie nach dem Squash mit einem -f- einen Kraftstoß.