Ich habe eine Pull-Anfrage gestellt, aber danach habe ich einige Commits für das Projekt vor Ort vorgenommen, wodurch meine Pull-Anfrage verschmutzt wurde. Ich habe versucht, sie zu entfernen, aber ohne Glück.
Ich habe einige ähnliche Fragen zu StackOverflow gefunden, kann aber nicht anwenden, was dort enthalten ist. Es ist meine erste Pull-Anfrage auf GitHub, daher ist es mir irgendwie seltsam, wie das alles funktioniert.
Das hervorgehobene Commit ist das, das ich brauche, um alle anderen Dinge zu behalten und zu entfernen. Es wird das vierte Commit in der Geschichte, weil ich einige Zusammenführungssachen mache.
Kann jemand bitte erklären, was los ist und wie dieses Problem behoben werden kann?
git
github
pull-request
humazed
quelle
quelle
what branch
= der Zweig, an dem Sie arbeiten,onto what branch
= der Zweig, in den Sie eine Anfrage stellenAntworten:
Sie haben verschiedene Techniken, um es zu tun.
In diesem Beitrag - lesen Sie den Teil über das Zurücksetzen - wird detailliert erklärt, was wir tun möchten und wie es geht.
Hier ist die einfachste Lösung für Ihr Problem:
Der Befehl zum Zurücksetzen erstellt ein neues Commit mit dem Rückgängigmachen des ursprünglichen Commits.
quelle
Die Leute würden nicht gerne ein falsches Commit und ein Revert-Commit sehen, um Änderungen des falschen Commits rückgängig zu machen. Dies verschmutzt die Commit-Historie.
Hier ist eine einfache Möglichkeit, das falsche Commit zu entfernen, anstatt Änderungen mit einem Revert-Commit rückgängig zu machen.
git checkout my-pull-request-branch
git rebase -i HEAD~n
// Won
ist die Anzahl der letzten Commits, die Sie in die interaktive Rebase aufnehmen möchten?pick
durchdrop
für Commits, die Sie verwerfen möchten.git push --force
quelle
git push origin HEAD:myBranch --force
. Aber sonst super und hilfsbereit.Wenn Sie ein Commit entfernen und seine Änderungen nicht beibehalten möchten, hat @ferit eine gute Lösung.
Wenn Sie dieses Commit zum aktuellen Zweig hinzufügen möchten, es aber nicht sinnvoll ist, Teil des aktuellen PR zu sein, können Sie stattdessen Folgendes tun:
git rebase -i HEAD~n
git reset HEAD^ --soft
diese Option, um die Änderungen aufzuheben und sie wieder in einen bereitgestellten Zustand zu versetzen.git push --force
diese Option, um den Remote-Zweig ohne Ihr entferntes Commit zu aktualisieren.Jetzt haben Sie das Commit von Ihrer Fernbedienung entfernt, aber die Änderungen werden weiterhin lokal vorgenommen.
quelle
Gehen Sie also wie folgt vor:
Nehmen wir an, Ihr Filialname ist my_branch und dies hat die zusätzlichen Commits.
git checkout -b my_branch_with_extra_commits
(Halten Sie diesen Zweig unter einem anderen Namen gespeichert)gitk
(Öffnet die Git-Konsole)git checkout my_branch
gitk
(Dies öffnet die Git-Konsole)reset branch to here
"git pull --rebase origin branch_name_to _merge_to
git cherry-pick <SHA you copied in step 3. >
Sehen Sie sich nun den Commit-Verlauf der lokalen Niederlassung an und stellen Sie sicher, dass alles gut aussieht.
quelle
Das hat mir geholfen:
Erstellen Sie einen neuen Zweig mit dem vorhandenen. Nennen wir das vorhandene
branch_old
und das neue alsbranch_new
.Zurücksetzen
branch_new
einen stabilen Zustand , wenn Sie überhaupt kein Problem beim Festschreiben hatten. Gehen Sie beispielsweise wie folgt vor, um es auf die Ebene Ihres lokalen Masters zu bringen:Git Reset - Hard Master Git Push - Force Origin
cherry-pick
die Commits vonbranch_old
inbranch_new
git push
quelle