Ви повинні мати можливість примусити місцеве перегляду на віддалене репо, використовуючи
git push -f <remote> <branch>
(наприклад git push -f origin master
). Відпустившись <remote>
і <branch>
змусить натиснути всі локальні гілки, які встановили --set-upstream
.
Зауважте, якщо інші люди поділяться цим сховищем, історія їх перегляду буде суперечити новій. І якщо у них з’являться місцеві зобов’язання після зміни, вони стають недійсними.
Оновлення : Думав, я б додав бічну ноту. Якщо ви створюєте зміни, які переглядатимуть інші, то не рідкість створювати гілку з цими змінами та періодично проводити перезавантаження, щоб вони були в курсі основної галузі розвитку. Дозвольте іншим розробникам знати, що це буде періодично, щоб вони знали, чого очікувати.
Оновлення 2 : Через зростаючу кількість глядачів я хотів би додати додаткову інформацію про те, що робити, коли ви upstream
відчуваєте сильний натиск.
Скажіть, я клонував ваше репо і додав декілька так:
D ---- E тема
/
A ---- B ---- C розвиток
Але пізніше development
гілка буде натиснута на rebase
, що призведе до того, що я отримаю помилку, наприклад, коли я запускаю git pull
:
Розпакування предметів: 100% (3/3), зроблено.
З <переположення>
* розвиток галузі -> FETCH_HEAD
Автоматичне об’єднання <файлів>
КОНФЛІКТ (зміст): конфлікт об'єднання в <місцях>
Помилка автоматичного злиття; виправити конфлікти, а потім здійснити результат.
Тут я міг би виправити конфлікти і commit
, але це залишило б мені справді некрасиву історію вчинення:
C ---- D ---- E ---- F тема
//
A ---- B -------------- C 'розвиток
Використовувати це може здатися привабливим, git pull --force
але будьте обережні, тому що це залишить вас з натягнутими зобов'язаннями:
D ---- E тема
A ---- B ---- C 'розвиток
Тому, мабуть, найкращий варіант - це зробити git pull --rebase
. Це вимагає від мене вирішення будь-яких конфліктів, як раніше, але я буду використовувати кожен крок замість того, щоб вчиняти git rebase --continue
. Врешті-решт історія комісій буде виглядати набагато краще:
D '--- E' тема
/
A ---- B ---- C 'розвиток
Оновлення 3: Ви також можете використовувати цю --force-with-lease
опцію як "безпечніший" силовий поштовх, як згадував Cupcake у своїй відповіді :
Силове натискання з "орендою" дозволяє примусовому натисканню вийти з ладу, якщо на пульті дистанційного керування з’являються нові коміти (технічно, якщо ви ще не взяли їх у відділення віддаленого відстеження), що корисно, ви не хочете випадково перезаписати чужі зобов’язання, про які ви ще навіть не знали, і просто хочете перезаписати свої власні:
git push <remote> <branch> --force-with-lease
Ви можете дізнатися більше подробиць про використання --force-with-lease
, прочитавши будь-яке з наступного:
git push origin --force
працювали для вас?