我试图了解两者之间的区别
git push --force
和
git push --force-with-lease
我的猜测是,如果远程没有本地分支没有的提交,则后者仅推送到远程?
--force-with-lease
与现代CPU上的比较和交换指令的实现类似:希望发生交换的提供了期望值和新值。进行交换的系统将期望值与真实的当前值进行比较,并且当且仅当两者相等时才进行交换。使用git push
,期望值就是远程跟踪名称中的值,例如,git push --force-with-lease origin X
将您自己的origin/X
值与新的期望值一起发送;origin
的Git会告诉您是否进行了交换。
origin
进行了交换,那么您就完成了。如果不是,您可以运行git fetch origin
以获取新的当前值,如果需要,可以对所做的更改进行重新处理,然后运行另一个“租赁租用比较交换”以再次尝试。
git help push
有用例说明了其目的(基本上是为了防止您浪费别人刚刚提出的变更)。我有点不清楚远程跟踪分支的工作方式。但大概通常情况下,您需要准确查看上次执行fetch
或pull
没有新提交时的外观。