Ich bin nicht sicher, wie/ob ich diese Commits quetschen kann oder Gruppe/Squash Mine allein?
Squash nur Ihre commits nicht andere !!
Vor kurzem hatte ich das gleiche Problem, ich hatte 41 Commits auf meine Pull-Anforderungen, mein Zweig hatte einen Merge-Konflikt und meine Pull-Anfrage war abgestanden. Ich musste mich mit einigen der Probleme auseinandersetzen, denen Sie jetzt gegenüberstehen. Ich werde nur etwas berühren, was ich umgesetzt habe.
one of my commits
another one of my commits
one of my commits, the first one after branching
Ich schlage vor, Squash nur Commits (alle von ihnen, wenn Sie wollen).
Zum Beispiel, wenn Sie 3 Commits haben, können Sie sie zerquetschen und in eines mit interaktiven Rebase machen. Siehe unten Befehl:
$ git rebase -i HEAD~n
Zum Beispiel Sie 3 Commits zerquetschen wollen:
$ git rebase -i HEAD~3
Jetzt finden Sie eine interaktive rebase Schnittstelle, wo Sie schreiben können umformulieren/pick auf erste begehen und Squash auf der Rest von ihnen. Bitte lesen Sie dieses Video zum besseren Verständnis.
Squashing commits
merge commit
someone else's commit
another merge commit
another person's commit
Rebase zu anderen (jemand anderes) begeht
Dies ist das gemeinsame Problem jeder zugewandt ist, wenn git verwenden. Stellen Sie sich vor, Sie arbeiten an Ihrem lokalen Repo. Nachdem Sie einige Zeit gearbeitet haben, haben Sie einige Commits gemacht, jetzt möchten Sie sie zum ursprünglichen Remote-Repository verschieben. Cool, das hast du gemacht git push
, die merge commit
Problem sagt.
Sie wissen, jemand anderes könnte auch zu dem gleichen Remote-Repo verpflichtet, die jetzt aktualisiert wird. Da Ihr lokaler Repo nicht auf den entfernten Repo aktualisiert wird, gibt es merge commit problem
. Was nun, wenn wir dieses Problem lösen? Können wir den Repo unseres lokalen Computers auf Ihren ursprünglichen Remote-Computer aktualisieren? Ist es möglich?
Ja, es ist möglich, Sie können es tun, indem Sie umlenken. Wie?
Wenn Sie das tun:
git pull --rebase
Was hier passiert? Git wird alle lokalen Commits zurückspulen (rückgängig machen), die Remote-Commits herunterziehen und dann Ihre lokalen Commits über die neu gezogenen Remote-Commits wiederholen. Wenn Konflikte auftreten, die git nicht verarbeiten kann, erhalten Sie die Möglichkeit, die Commits manuell zusammenzuführen. Führen Sie dann einfach git rebase --continue
aus, um Ihre lokalen Commits fortzusetzen.
Sehen Sie diese blog post für mehr Details
Wenn Sie Ihre Niederlassung fusionieren zu meistern?
Best (and safest) way to merge a git branch into master
gibt es einen Grund, warum Sie rebase verwenden? – ilj
@ilj Andere Teammitglieder möchten eine saubere Geschichte so gut wie möglich behalten, um den Commit-Verlauf vernünftig zu halten. Ich persönlich stört eine einigermaßen gesprächige Geschichte (nicht völlig aus der Reihe) – jkj2000
in meiner Erfahrung schafft es mehr Probleme als löst. – ilj