Ich versuche den Unterschied zwischen zu verstehen
git push --force
und
git push --force-with-lease
Ich vermute, dass letztere nur dann auf die Fernbedienung pushen, wenn die Fernbedienung keine Commits hat, die der lokale Zweig nicht hat ?
--force-with-lease
ähnelt der von Vergleichs- und Austauschanweisungen auf modernen CPUs: Derjenige , der den Austausch durchführen möchte, liefert den erwarteten Wert und den neuen Wert. Das System, das den Swap durchführt, vergleicht den erwarteten Wert mit dem tatsächlichen aktuellen Wert und führt den Swap genau dann durch, wenn beide gleich sind. Mit git push
ist der erwartete Wert der Wert im Namen der Fernverfolgung, z. B. git push --force-with-lease origin X
sendet er Ihren eigenen origin/X
zusammen mit dem neuen gewünschten Wert. origin
Git sagt dir, ob es den Austausch gemacht hat oder nicht.
origin
den Austausch gemacht hat, sind Sie fertig. Wenn nicht, können Sie ausführen git fetch origin
, um den neuen aktuellen Wert abzurufen, Ihre Änderungen bei Bedarf zu überarbeiten und einen weiteren Force-with-Lease-Vergleich und -Tausch auszuführen, um es erneut zu versuchen.
git help push
Es gibt Anwendungsfälle, die den Zweck erläutern (im Grunde genommen, um Sie davon abzuhalten, eine Änderung zu verwerfen, die jemand gerade hochgeschoben hat). Was mir etwas unklar ist, ist die Funktionsweise des Remote-Tracking-Zweigs. Aber vermutlich muss es in der Regel genau so aussehen, wie es beim letzten Malfetch
oderpull
ohne neue Commits ausgesehen hat .