Я намагаюся зрозуміти різницю між
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
не мали нових зобов’язань.