Я намагаюся зрозуміти різницю між
git push --force
і
git push --force-with-lease
Я здогадуюсь, що останній лише натискає на пульт, якщо у віддаленого немає комітетів, яких немає у місцевої гілки ?
--force-with-leaseподібна до інструкцій порівняння та заміни на сучасних процесорах: той, хто хоче, щоб відбувся замін, надає очікуване значення та нове значення. Система, що здійснює своп, порівнює очікуване значення з справжнім поточним значенням, і робить своп тоді і тільки тоді, коли обидва рівні. З git push, очікуване значення - це те, що є в імені віддаленого відстеження, наприклад, git push --force-with-lease origin Xнадсилає своє власне origin/Xразом з новим потрібним значенням; origin's Git повідомляє вам, чи робив обмін, чи ні.
originздійснив обмін, ви закінчили. Якщо ні, ви можете запустити, git fetch originщоб забрати нове поточне значення, переробити зміни, якщо це потрібно, та запустіть інше примусово з орендою порівняти-поміняти, щоб спробувати ще раз.
git help pushмає випадки використання, що пояснюють його мету (в основному, щоб уникнути того, щоб змінити зміни, когось просто підштовхнули). Що мені трохи незрозуміло - це те, як працює відділення віддаленого відстеження. Але, мабуть, зазвичай потрібно буде точно виглядати, як це виглядало минулого разу, коли ви робилиfetchчиpullне мали нових зобов’язань.