Ну да и нет ...
Я понимаю, что вы хотите, чтобы ваши локальные копии «переопределяли» то, что находится на удаленном компьютере, но, черт возьми, если кто-то изменил файлы в удаленном репо каким-то другим способом, и вы просто проигнорируете их изменения и попытаетесь «принудительно» свои собственные изменения, даже не глядя на возможные конфликты, ну, я оплакиваю вас (и ваших коллег) ;-)
Тем не менее, действительно легко поступать "правильно ..."
Шаг 1:
git stash
в вашем местном репо. Это сохранит ваши локальные обновления в тайнике, а затем вернет ваши измененные файлы в их состояние до редактирования.
Шаг 2:
git pull
получить любые модифицированные версии. Надеюсь, теперь у вас не будет новых версий файлов, о которых вы беспокоитесь. Если этого не произойдет, следующий шаг пройдет гладко. Если да , то вам нужно поработать, и вы будете рады, что сделали.
Шаг 3:
git stash pop
Это объединит ваши модифицированные версии, которые вы спрятали на шаге 1, с версиями, которые вы только что вытащили на шаге 2. Если все пройдет гладко, то все будет готово!
Если, с другой стороны, возникли реальные конфликты между тем, что вы вытащили на шаге 2, и вашими модификациями (из-за того, что кто-то в это время редактировал), вы узнаете и получите указание разрешить их. Сделай это.
Так все будет работать намного лучше - он, вероятно, сохранит ваши изменения без какой-либо реальной работы с вашей стороны, предупреждая вас о серьезных, серьезных проблемах.
git commit
местные измененияgit pull
?Вы можете сначала спрятать свои локальные изменения, затем вытащить, а затем открыть тайник.
Все, что отменяет изменения с удаленного доступа, будет иметь конфликты, которые вам придется разрешать вручную.
источник
Итак, вы зафиксировали свои локальные изменения в своем локальном репозитории. Затем, чтобы получить удаленные изменения в вашем локальном репозитории без внесения изменений в ваши локальные файлы, вы можете использовать
git fetch
. Фактическиgit pull
это двухэтапная операция: неразрушающая,git fetch
за которой следуетgit merge
. См. В чем разница между git pull и git fetch? для более подробного обсуждения.Подробный пример:
Предположим, ваш репозиторий такой (вы внесли изменения
test2
:И
origin
репозиторий выглядит так (кто-то другой совершилtest1
):В этот момент git будет жаловаться и попросить вас сначала вытащить, если вы попытаетесь отправить свой
test2
в удаленный репозиторий. Если вы хотите увидеть, что такое test1, не изменяя локальный репозиторий, запустите это:Ваш локальный репозиторий результатов будет таким:
Теперь у вас есть удаленные изменения в другой ветке, и вы сохраняете свои локальные файлы нетронутыми.
Тогда что дальше? Вы можете выполнить a
git merge
, который будет иметь тот же эффект, что иgit pull
(в сочетании с предыдущимgit fetch
), или, как я бы предпочел, сделать a,git rebase origin/master
чтобы применить ваше изменение поверхorigin/master
, что даст вам более чистую историю.источник