git pull аналогично / напротив git push -f?

Иногда, особ. когда я единственный, кто работает с удаленным репозиторием, мне нравится переписывать историю с помощью git rebase -i и git push origin master -f.

Как сделать принудительное git pull origin master без слияния? Я попробовал это с опцией -f, но это не сработало. Я просто хочу переписать историю моего локального репозитория git, чтобы она соответствовала истории удаленного (происхождения).


person ma11hew28    schedule 01.08.2011    source источник
comment
@Matt Age не (всегда) актуален для принятия решения о дублировании, и, поскольку связанный вопрос имеет больше голосов и более подробные ответы, он является хорошим кандидатом.   -  person Mark Rotteveel    schedule 09.06.2015
comment
@MarkRotteveel Я не знаю, я думаю, что ретроспективно закрывать что-то как дубликат нелогично.   -  person Matt    schedule 09.06.2015
comment
@Matt Это руководство: newer-and-ha/147651#147651" title="Должен ли я проголосовать за закрытие повторяющегося вопроса, даже если он намного новее и ха">meta.stackexchange.com/questions/147643/   -  person Mark Rotteveel    schedule 09.06.2015
comment
@MarkRotteveel Спасибо, я прочитаю об этом глубже, но, просто взглянув на ответ MOD, я вижу, что ошибся, и это правильное действие, чтобы пометить его как дубликат, и я исправлен .... и помечен как дубликат   -  person Matt    schedule 09.06.2015
comment
Также может рассматриваться как дубликат сбросить ветку локального репозитория, чтобы она была такой же, как HEAD удаленного репозитория   -  person Peter Lamberg    schedule 31.03.2020


Ответы (2)


Учитывая, что ему несколько лет, ответ MattDiPasquale уничтожит любые локальные изменения или коммиты.

Если у вас есть локальные изменения или коммиты, но вам нужно переписать историю, запустите:

git fetch origin
git rebase origin/master
person Jason McCreary    schedule 20.01.2014
comment
Если все, что вам нужно сохранить, это ваша текущая неустановленная работа (не локальные коммиты), просто введите git stash && git fetch origin && git reset --hard origin/master && git stash pop - person novalore; 29.08.2014
comment
Будет ли это работать, если старый источник/мастер и ваш локальный мастер происхождения не имеют общего корня (например, история происхождения была переписана с изменением SHA всех коммитов)? - person Dan M.; 09.06.2020

person    schedule
comment
После git fetch, конечно. - person whitequark; 01.08.2011
comment
@whitequark спасибо! добавлено в ответ. - person ma11hew28; 05.08.2011
comment
Обратите внимание, это работает только для чистой ветки. Любые изменения или новые фиксации в локальной рабочей копии будут потеряны. Я добавил ответ, используя rebase. - person Jason McCreary; 20.01.2014