Как игнорировать ошибку "git pull" о моих локальных изменениях будет перезаписано слиянием?

Как игнорировать следующее сообщение об ошибке Git pull?

Ваши локальные изменения в следующие файлы будут перезаписаны слиянием

Что делать, если я хочу их переписать?

Я пробовал такие вещи, как git pull -f, но ничего не работает.

Чтобы быть ясным, я хочу только переписать конкретные изменения, а не все.

+494
источник поделиться
28 ответов

Хорошо с помощью двух других ответов я придумал прямое решение:

git checkout HEAD^ file/to/overwrite
git pull
+277
источник

Если вы хотите удалить все локальные изменения из вашей рабочей копии, просто спрячьте их:

git stash save --keep-index

Если они вам больше не нужны, вы можете оставить этот тайник:

git stash drop

Если вы хотите перезаписать только определенные части ваших локальных изменений, есть две возможности:

  1. Зафиксируйте все, что вы не хотите перезаписывать, и используйте метод выше для остального.

  2. Используйте git checkout path/to/file/to/revert для изменений, которые вы хотите перезаписать. Убедитесь, что файл не подготовлен с помощью git reset HEAD path/to/file/to/revert.

+377
источник

Это позволяет мне переопределить все локальные изменения и не требует идентификатора:

git reset --hard
git pull
+183
источник

Вот решение, которое отбрасывает поэтапные изменения:

git reset file/to/overwrite
git checkout file/to/overwrite
+72
источник

Вы можете либо зафиксировать свои изменения, прежде чем выполнять слияние, либо занести их:

  1. git stash save
  2. git merge origin/master
  3. git stash pop
+60
источник

Если вы хотите отменить ваши локальные изменения в одном файле, вы можете сделать следующее:

git checkout -- <file>

Затем вы можете перезаписать файл [s] последней версией, просто выполнив:

git pull
+42
источник

Если ваш репозиторий содержит несколько файлов, которые удаляются из master:

  1. git checkout master
  2. git fetch origin
  3. git reset --hard origin/master
  4. git checkout -b newbranch
+16
источник

Иногда ни одна из этих работ не работает. Раздражающе, из-за LF, что я думаю, что будет работать, это удалить файлы, а затем потянуть. Не то, чтобы я рекомендую это решение, но если файл не существует, git не будет бесполезно информировать вас о том, что ваши изменения (которые могут даже не быть изменениями) будут переопределены и позволят вам продолжить.

Используйте на свой страх и риск.

+11
источник

В недавнем Git вы можете добавить -r/--rebase в команду pull, чтобы переустановить текущую ветку поверх ветки восходящего потока после извлечения. Предупреждение должно исчезнуть, но есть риск, что вы столкнетесь с некоторыми конфликтами, которые вам нужно решить.


В качестве альтернативы вы можете проверить другую ветку с силой, а затем снова вернуться к master, например:

git checkout origin/master -f
git checkout master -f

Затем потяните его, как обычно:

git pull origin master

Используя этот метод, вы можете сэкономить время от стаинга (git stash) и возможные проблемы с разрешением, перезаписывать файлы (git reset HEAD --hard), удалять файлы (git clean -fd) и т.д. Также выше это легче запомнить.

+8
источник

git stash save --keep-index не работал для меня.

команда ниже работала так, как ожидалось.

git reset --hard
git pull

Он отменяет все локальные изменения, если они вам не нужны.

+8
источник

Эта проблема возникает из-за того, что вы вносили изменения локально в файл /s, и один и тот же файл/с существует с изменениями в репозитории Git, поэтому перед pull/push вам понадобятся локальные изменения stash:

Чтобы перезаписать локальные изменения одного файла:

git reset file/to/overwrite
git checkout file/to/overwrite

Чтобы перезаписать все локальные изменения (изменения во всех файлах):

git stash
git pull
git stash pop

Также эта проблема может быть из-за того, что вы находитесь на ветке, которая не объединена с главной ветвью.

+7
источник

Вы можете использовать это для перезаписывания файла

git checkout file_to_overwrite
+4
источник

Это сработало для меня, чтобы отменить изменения на удаленном удаленном сервере и вытащить из источника управления GitHub:

git reset --hard
git pull origin master
+4
источник

Лучший способ решить эту проблему:

git checkout -- <path/file_name>

После этого вы можете перезаписать файл:

git pull origin master
+4
источник

git reset --hard && git clean -df

Предостережение. Это приведет к сбросу и удалению всех неотслеживаемых файлов.

+4
источник

Если вы хотите переписать определенные изменения, вам нужно как-то сказать, какие из них вы хотите забыть.

Вы можете попробовать выборочно скопировать изменения, которые вы хотите отказаться, используя git stash --patch, а затем сбросить этот штамп с помощью git stash drop. Затем вы можете удалить удаленные изменения и слить их как обычно.

+3
источник

Вот моя стратегия для решения проблемы.

Постановка задачи

Нам нужно внести изменения в более чем 10 файлов. Мы попробовали PULL (git pull origin master), но Гит крикнул:

Ошибка: ваши локальные изменения в следующих файлах будут перезаписаны слиянием: пожалуйста, зафиксируйте свои изменения или запишите их, прежде чем сможете объединиться.

Мы попытались выполнить commit а затем pull, но они тоже не работали.

Решение

На самом деле мы были на грязной сцене, потому что файлы находились в "промежуточной области", также известной как "Индексная область", а некоторые из них были в "Head Area", а также "локальном каталоге Git". И мы хотели вывести изменения с сервера.

Проверьте эту ссылку для информации о различных этапах Git в ясной форме: GIT Stages

Мы выполнили следующие шаги

  • git stash (это сделало наш рабочий каталог чистым. Ваши изменения хранятся в стеке Git).
  • git pull origin master (Потяните за изменения с сервера)
  • git stash apply (применяется все изменения из стека)
  • git commit -m 'message' (git commit -m 'message' изменение)
  • git push origin master (git push origin master изменения на сервер)
  • git stash drop (Drop the stack)

Позвольте понять, когда и зачем вам нужно

Если вы находитесь в грязном состоянии, это означает, что вы вносите изменения в свои файлы, а затем по какой-либо причине вы вынуждены тянуть или переключаться на другую ветку для очень срочной работы, поэтому на данный момент вы не можете тянуть или переключитесь до тех пор, пока вы не зафиксируете изменения. Команда stash здесь как рука помощи.

Из книги ProGIT, 2-е издание:

Часто, когда вы работали над частью своего проекта, все в грязном состоянии, и вы хотите немного переключить ветки на работу над чем-то другим. Проблема в том, что вы не хотите совершать совершение половинной работы, чтобы вы могли вернуться к этому вопросу позже. Ответ на этот вопрос - команда git stash. Stashing берет грязное состояние вашего рабочего каталога - то есть ваши измененные отслеживаемые файлы и поэтапные изменения - и сохраняет его в стеке незавершенных изменений, которые вы можете повторно применить в любое время.

+3
источник

У меня был особый случай: у меня был файл с - без изменений на нем. Было трудно найти, так как команда git status не показывала никаких изменений

+2
источник

Если вы хотите сохранить производственные изменения на сервере, просто объединитесь в новый элемент конфигурации. Метод обработки выглядит следующим образом:

git stash
git pull
git stash pop

Возможно, вы не выполняете все операции. Вы можете знать, что вы можете сделать дальше.

+2
источник

Я игнорировал файл в своем репо, и когда я сделал git pull upstream master, я получил следующую ошибку:

Ошибка: ваши локальные изменения в следующих файлах будут перезаписаны с помощью объединения: myfile.js Пожалуйста, сделайте свои изменения или запишите их, прежде чем сможете объединиться. Aborting

Чтобы решить эту проблему, я сделал следующее

git update-index --no-assume-unchanged myfile.js

Затем я сделал git status и получил это сообщение

В ветке мастера Ваша ветка отстает от "origin/master" на 4 фиксации, и может быть быстро перенаправлен. (используйте "git pull", чтобы обновить локальную отделение)

Изменения не выполняются для фиксации: (используйте "git add..." для обновления что будет сделано) (используйте "git checkout -...", чтобы отменить изменения в рабочем каталоге)

modified: myfile.js

изменений не было добавлено в commit (используйте "git добавить" и/или "git commit -a" )

Тогда я сделал git checkout myfile.js, а затем git pull upstream master. На этот раз операция git pull была успешной.

+1
источник

Я столкнулся с этим, когда потянулся от мастера.

Способ обработки, используя Visual Studio;

  1. Во-первых, я выполнил команду "Отменить" в своем решении.
  2. Затем я сделал процесс Git pull.

Надеюсь это поможет!

+1
источник

Если эта ошибка вызвана концами строк,

git add
git checkout mybranch

будет работать. Я не совсем уверен, почему он работает.

0
источник

Для Pycharm вы можете сделать Git--> Revert, а затем потянуть.

0
источник

Это сообщение также может случиться, если используется git-lfs и указатель файла был перезаписан реальным файлом.

то вы используете:

git stash
git lfs migrate import
git pull

полный вывод из моего дела

λ git stash
Saved working directory and index state WIP on master: 5d4ad47 Merge branch 'feature/...' into 'master'
Encountered 1 file(s) that should have been pointers, but weren't:
        public/apple-touch-icon.png

λ git pull
Updating 5a4ad44..b25f79d
error: Your local changes to the following files would be overwritten by merge:
        public/apple-touch-icon.png
Please commit your changes or stash them before you merge.
Aborting

λ git lfs migrate import
migrate: Fetching remote refs: ..., done
migrate: Sorting commits: ..., done
migrate: Rewriting commits: 100% (0/0), done
migrate: Updating refs: ..., done
migrate: checkout: ..., done


λ git pull
Updating 5d4ad47..a25c79a
Fast-forward
 public/apple-touch-icon.png | Bin 2092 -> 130 bytes
 public/favicon.ico          | Bin 6518 -> 1150 bytes
 2 files changed, 0 insertions(+), 0 deletions(-)

см. https://github.com/git-lfs/git-lfs/issues/2839

0
источник

Я пробовал, и он успешно, прежде чем потянуть, разрешить совершить весь файл, который вы не совершили, тогда вы не получите эти сообщения от AS.

0
источник

Я получил то же сообщение об ошибке, выполнил
: Команда PluginUpdate из командной строки редактора vim

"Пожалуйста, передайте изменения или спрячьте их перед тем, как объединить"

1. просто физически удалил папку, содержащую плагины из

rm -rf ~/.vim/bundle/plugin-folder/

2. и переустановил его из командной строки vim,
: PluginInstall!
потому что мой ~/.vimrc содержал инструкции для сборки плагина к этому месту назначения:

enter image description here

это создало правильную папку,
и получил новый пакет в эту папку ~./. vim/bundle/reinstalled-plugins-folder
Знаки " ! " (Из-за неудачной команды PluginUpdate) были изменены
в знак " + ", и после этого сработала команда PluginUpdate.

0
источник

Самое простое решение:

git reset --hard && git pull
0
источник

Я новичок в git и не уверен, что мое решение - хорошая идея.

Я проверил ВСЕ ответы, и ни один из них не помог мне!

Но я нашел другое решение:

1. Backup both of local and repository versions of the file.
2. Delete the file from repository.
3. git add .
4. git commit
5. git push

Надеюсь, это поможет.

0
источник

Посмотрите другие вопросы по меткам или Задайте вопрос