git: Einzelne Commits pushen, mit Rebase neu anordnen, Commits duplizieren

Ich möchte mehrere einzelne Commits an ein Git-Remote-Repo senden. Ich bin Geoffs Antwort gefolgt, die ich hier gefunden habe:

Wie kann ich ein bestimmtes Commit auf eine Fernbedienung übertragen und nicht die vorherigen Commits?

Die Commits, die ich pushen möchte, stehen nicht im Vordergrund, daher muss ich die Commits zuerst mit rebase neu anordnen. Dazu habe ich die folgenden Anweisungen verwendet:

http: //gitready.com/advanced/2009/03/20/reorder-commits-with-rebase.htm

rundsätzlich habe ich getan:

git clone
git commit
git commit
...
git pull
git rebase -i HEAD~3
git push origin <SHA>:master

Ich habe Fehler dabei. Also fing ich an, mich eingehender mit dem Problem zu befassen. Ich habe festgestellt, dass mein Protokoll doppelte Commits enthält, wenn ich nach dem erneuten Basieren einen zweiten Git-Pull durchführe. Beispiel:

git clone
git commit
git commit
...
git pull
git log --pretty=format:"%h - %an : %s" // log before rebasing
git rebase -i HEAD~3
git pull
git log --pretty=format:"%h - %an : %s" // log after rebasing
git pull 
git log --pretty=format:"%h - %an : %s" // log after rebasing after pulling

So habe ich diese Frage gestellt:

git: Doppelte Commits nach lokalem Neustart, gefolgt von Pull

Rogers Antwort dort führte mich zu der Frage: Warum werden nach dem Umbasieren und Ziehen doppelte Commits angezeigt?

Von oben sieht das Protokoll vor dem erneuten Basieren wie folgt aus:

84e4015 - Me : Local Commit 3
0dbe86a - Me : Local Commit 2
d57ba2a - Me : Merge branch 'master' of remote repository
a86ea35 - Me : Local Commit 1 before reordering
2fc4fe7 - Remote User 2 : Remote Commit 2
b7a8656 - Remote User 1 : Remote Commit 1
8ce80fc - Me : Merge branch 'master' of remote repository

Und das Protokoll nach dem Rebasing sieht folgendermaßen aus:

cf1ff7b - Me : Local Commit 3
cd14463 - Me : Local Commit 2
b9d44fb - Me : Local Commit 1 after reordering
9777c56 - Remote User 2 : Remote Commit 2
a2d7d8b - Remote User 1 : Remote Commit 1
8ce80fc - Me : Merge branch 'master' of remote repository

Bitte beachten Sie, dass die ursprünglichen 2 Commits 2fc4fe7 und b7a8656 neue SHAs haben. 9777c56 und a2d7d8b. Ich glaube, das ist der Anfang des Problems.

Nun nachdem ich einen anderen Git gemacht habe sieht das Log so aus:

e8e1a85 - Me : Merge branch 'master' of remote repository
cf1ff7b - Me : Local Commit 3
cd14463 - Me : Local Commit 2
b9d44fb - Me : Local Commit 1 after reordering
9777c56 - Remote User 2 : Remote Commit 2
a2d7d8b - Remote User 1 : Remote Commit 1
2fc4fe7 - Remote User 2 : Remote Commit 2 // duplicate 2
b7a8656 - Remote User 1 : Remote Commit 1 // duplicate 1
8ce80fc - Me : Merge branch 'master' of remote repository

Bitte beachten Sie, dass die Remote-Commits jetzt dupliziert sind und die ursprünglichen SHAs der Remote-Commits 2fc4fe7 und b7a8656 zurückgegeben wurden.

n Rogers Antwort sagte er, dass es wie die Schuld anderer Leute aussah, die auf Trottel drängten, und dass sie ihre bereits gedrängten Commits neu basierten. Aber ich glaube, es ist meine Schuld, dass ich ein Push-Commit lokal umbasiert habe.

Ist das, weil ich ein Commit neu basiert habe, das bereits auf die Fernbedienung übertragen wurde? Wenn ja, was hätte ich tun sollen, um dies zu vermeiden? Ich muss meine Commits zurücksetzen, damit ich ein einzelnes Commit ausführen kann. Hätte ich dazu ein Verzweigungssystem verwenden sollen? Wenn ja, wie würde ich Zweige verwenden, um dieses Problem zu lösen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage