Как игнорировать следующее сообщение об ошибке на Git pull?
Ваши локальные изменения в следующих файлах будут перезаписаны слиянием
Что если я захочу перезаписать их?
Я пробовал такие вещи, как git pull -f
, но ничего не работает.
Чтобы было ясно, я хочу перезаписать только конкретные изменения, а не все.
git config core.fileMode false
сохранить мои временаОтветы:
Если вы хотите удалить все локальные изменения, включая файлы, которые не отслеживаются git, из вашей рабочей копии, просто спрячьте их:
Если они вам больше не нужны, вы можете оставить этот тайник:
Если вы не хотите сохранять изменения, которые вы уже сделали - например, с помощью
git add
- тогда добавьте эту опцию--keep-index
. Обратите внимание, что это все равно предотвратит слияние, если эти поэтапные изменения вступят в противоречие с изменениями из восходящего потока.Если вы хотите перезаписать только определенные части ваших локальных изменений, есть две возможности:
Зафиксируйте все, что вы не хотите перезаписывать, и используйте метод выше для остального.
Используйте
git checkout path/to/file/to/revert
для изменений, которые вы хотите перезаписать. Удостоверьтесь, что файл не установлен черезgit reset HEAD path/to/file/to/revert
.источник
git checkout HEAD^ path/to/file/to/revert
. Использование HEAD ^ все изменило.save --keep-index
".Хорошо, с помощью двух других ответов, я пришел к прямому решению:
источник
Это работает для меня, чтобы переопределить все локальные изменения и не требует идентификации:
источник
Вот решение, которое выбрасывает поэтапные изменения:
источник
Вы можете либо зафиксировать свои изменения перед слиянием, либо спрятать их:
git stash save
git merge origin/master
git stash pop
источник
--autostash
опция доступна только с--rebase
опцией (Если вы хотите отменить ваши локальные изменения в одном файле, вы можете сделать следующее:
Затем вы можете перезаписать файл [s] последней версией, просто выполнив:
источник
git reset HEAD~
а затем выполнитьgit checkout
git checkout -- <file>
терпит неудачу сerror: pathspec '<file>' did not match any file(s) known to git.
Если ваш репозиторий содержит несколько файлов, которые удаляются из
master
:git checkout master
git fetch origin
git reset --hard origin/master
git checkout -b newbranch
источник
Иногда ничего из этого не работает. Досадно, из-за LF, я думаю, что будет работать удаление файлов, а затем вытягивая. Не то чтобы я рекомендовал это решение, но если файл не существует, git не будет бесполезно сообщать вам, что ваши изменения (которые могут даже не быть изменениями) будут отменены, и позволит вам продолжить.
Используйте на свой риск.
источник
git stash save --keep-index
не работал для меня.Команда ниже работала как положено.
Он отменяет все локальные изменения, если они вам не нужны.
источник
Здесь так много ответов, что я не хочу добавлять еще один, но все вышеперечисленное более грубое, чем нужно. Я должен делать это все время, так как Git, кажется, запутался и говорит, что я изменил файлы, которые не изменились (не могу восстановить, потому что они не изменились, но я не могу вытащить, потому что они предположительно изменились) Самый простой и Самое быстрое, что я нашел до сих пор:
источник
В недавнем Git вы можете добавить команду
-r
/--rebase
on,pull
чтобы перебазировать вашу текущую ветку поверх ветки upstream после выборки. Предупреждение должно исчезнуть, но есть риск, что вы получите некоторые конфликты, которые вам нужно будет решить.В качестве альтернативы вы можете оформить другую ветку с применением силы, а затем вернуться обратно
master
, например:Затем потяните его снова как обычно:
Использование этого метода может сэкономить ваше время от stashing (
git stash
) и потенциальных проблем с разрешениями, перезагрузки файлов (git reset HEAD --hard
), удаления файлов (git clean -fd
) и т. Д. Кроме того, вышеизложенное легче запомнить.источник
Эта проблема связана с тем, что вы внесли изменения локально в файл / s, и тот же файл / файлы существует с изменениями в репозитории Git, поэтому перед pull / push вам нужно будет сохранить локальные изменения:
Чтобы перезаписать локальные изменения одного файла:
Чтобы перезаписать все локальные изменения (изменения во всех файлах):
Также эта проблема может быть из-за того, что вы находитесь на ветке, которая не объединена с главной веткой.
источник
git reset --hard && git clean -df
Внимание : это сбросит и удалит все неотслеживаемые файлы.
источник
Вы можете использовать это для перезаписи файла
источник
Лучший способ решить эту проблему:
После этого вы можете перезаписать файл:
источник
git checkout -- path/*
только один раз, и это позволило мне выполнить тягу после.Это сработало для меня, чтобы отменить изменения на живом удаленном сервере и извлечь из системы управления исходным кодом GitHub:
источник
Вот моя стратегия для решения проблемы.
Постановка задачи
Нам нужно внести изменения более чем в 10 файлов. Мы пытались
PULL (git pull origin master)
, но Гит кричал:Мы пытались выполнить
commit
и тогдаpull
, но они тоже не сработали.Решение
На самом деле мы были в грязной стадии, потому что файлы находились в «промежуточной области», также называемой «индексной областью», а некоторые находились в «головной области» или «локальной директории Git». И мы хотели вытащить изменения с сервера.
Проверьте эту ссылку для получения информации о различных этапах Git в понятной форме: этапы GIT
Мы выполнили следующие шаги
git stash
(это сделало наш рабочий каталог чистым. Ваши изменения хранятся в стеке Git).git pull origin master
(Вытащить изменения с сервера)git stash apply
(Применены все изменения из стека)git commit -m 'message'
(Совершил изменения)git push origin master
(Перенес изменения на сервер)git stash drop
(Бросить стек)Давайте разберемся, когда и зачем нужно прятаться
Если вы находитесь в грязном состоянии, это означает, что вы вносите изменения в свои файлы, а затем вы по какой-либо причине вынуждены тянуть или переключаться на другую ветку для какой-то очень срочной работы, поэтому на данный момент вы не можете тянуть или переключаться, пока вы не совершите изменения. Команда
stash
здесь как рука помощи.Из книги ProGIT , 2-е издание:
источник
Если вы хотите перезаписать определенные изменения, вам нужен способ сообщить, какие из них вы хотите забыть.
Вы можете попытаться выборочно сохранить изменения, которые хотите отменить,
git stash --patch
и затем сбросить ихgit stash drop
. Затем вы можете извлечь удаленные изменения и объединить их как обычно.источник
TL; DR;
Я не знаю, почему это еще не ответили, но решение, как вы можете видеть, простое. Все ответы здесь предлагают то же самое: удалить / сохранить ваши локальные изменения и применить апстрим, а затем (если вы
save
) примените свои локальные изменения сверху.Что
git pull --rebase --autostash
делает пошагово:Мой случай (вероятно, ваш тоже):
У меня есть локальные изменения (изменения в рабочем каталоге):
Когда я пытаюсь получить удаленные изменения, я получаю сообщение об ошибке:
Эти изменения не пересекаются с локальными изменениями:
Поэтому, когда я
pull --rebase --autostash
локальные изменения сохраняются и применяются без проблем автоматическиТеперь мои локальные изменения немного ниже:
источник
У меня был особый случай: у меня был файл с --assume-неизмененным. Это было трудно найти, так как
git status
команда не показывала никаких измененийисточник
Если вы хотите сохранить производственные изменения на сервере, просто объединитесь в новый элемент конфигурации. Метод обработки заключается в следующем:
Может быть, вы не выполняете все операции. Вы можете знать, что вы можете делать дальше.
источник
Я игнорировал файл в своем репо, и когда я это сделал,
git pull upstream master
я получил следующую ошибку:Чтобы решить это, я сделал следующее
Я тогда сделал
git status
и получил это сообщениеЗатем я
git checkout myfile.js
последовалgit pull upstream master
. На этот раз операция git pull прошла успешно.источник
Я сталкивался с этим, когда тянул от мастера.
То, как я справился, используя Visual Studio;
Надеюсь это поможет!
источник
Самое простое решение:
источник
Я новичок в Git и не уверен, что мое решение хорошая идея.
Я проверил ВСЕ ответы, и ни один из них не работал для меня!
Но я нашел другое решение:
Надеюсь это поможет.
источник
Ошибка «Ваши локальные изменения в следующих файлах будут перезаписаны слиянием», потому что у вас есть некоторые изменения в локальном репо, которые еще НЕ были зафиксированы, поэтому перед извлечением из удаленного репо просто зафиксируйте изменения в локальном репо.
Допустим, у вашего удаленного репо есть какая-то ветка xyz, и вы хотите, чтобы эта ветка удаленного репо xyz была объединена (скопирована) с локальной веткой репозитория xyz,
источник
Если эта ошибка из-за окончания строки,
будет работать. Я не совсем уверен, почему это работает.
источник
Для Pycharm вы можете сделать Git -> Revert и затем потянуть.
источник
Это сообщение также может произойти, если
git-lfs
используется и указатель файла был перезаписан реальным файлом.тогда вы используете:
полный вывод из моего дела
см. https://github.com/git-lfs/git-lfs/issues/2839.
источник
Я попытался, и это успешно, прежде чем вытащить, позвольте зафиксировать все файлы, которые вы не зафиксировали, то вы не будете получать эти сообщения от AS.
источник