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 pushist der erwartete Wert der Wert im Namen der Fernverfolgung, z. B. git push --force-with-lease origin Xsendet er Ihren eigenen origin/Xzusammen mit dem neuen gewünschten Wert. originGit sagt dir, ob es den Austausch gemacht hat oder nicht.
originden 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 pushEs 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 Malfetchoderpullohne neue Commits ausgesehen hat .