Stellen Sie sich dieses Szenario vor:
- Entwickler A führt ein Commit durch: #n
- Dev. B schreibt # n + 1 fest
- Dev. A schreibt # n + 2 fest
- und begehen Sie # n + 3
und entdeckt dann, dass er in seinem Commit # n + 2 einen Defekt eingeführt hat.
Wie kann dev. Ein Rollback seiner letzten 2 Commits und Weiterentwicklung auf Commit # n + 1 ?
Versucht git reset --hard HEAD~2
* , aber es kommt zurück zu dev A's Commit #n .
commit
# n + 1, [1] Acommit
ted # n + 2, [2] erfolglospush
, [3]pull
, [4]push
. Auf github gibt es jetzt ein Commit (# n + 2) und einen Merge-Zweig 'master' (# n + 3).Antworten:
Es sollte zum n + 1-Commit zurückkehren. Wahrscheinlich haben Sie dort auch ein Merge-Commit. Sie können auch eine
git reset --hard <sha1_of_where_you_want_to_be>
quelle
git reflog
, aber ich kann nur auf meine lokalen Reflog-Informationen zugreifen, z. B. Commits #n, #n + 2, #n + 3 ... aber nichtgit log
, aber agit push -f
war auch erforderlich, damit die Modifikationen auf github reflektiert werden.--hard
bedeutet, dass alle nicht festgeschriebenen Änderungen, die Sie derzeit haben, dauerhaft verworfen werden. Verwenden Sie diese Option, um zu einem vorherigen Commit zurückzukehren, ohne Ihre Arbeit wegzuwerfen--soft
.