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

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

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

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

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

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

383
задан mae 14 янв. '13 в 15:14
источник поделиться
25 ответов

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

git checkout HEAD^ file/to/overwrite
git pull
237
ответ дан mae 14 янв. '13 в 17:04
источник поделиться

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

git stash save --keep-index

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

git stash drop

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

  • Зафиксируйте все, что вы не хотите перезаписывать, и используйте вышеприведенный метод для остальных.
  • Используйте git checkout path/to/file/to/revert для изменений, которые вы хотите перезаписать. Убедитесь, что файл не помещается через git reset HEAD path/to/file/to/revert.
312
ответ дан Daniel Hilgarth 14 янв. '13 в 15:17
источник поделиться

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

git reset --hard
git pull
125
ответ дан kravits88 01 окт. '15 в 4:07
источник поделиться

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

git reset file/to/overwrite
git checkout file/to/overwrite
66
ответ дан Aftershock 31 окт. '13 в 16:45
источник поделиться

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

  1. git stash save
  2. git merge origin/master
  3. git stash pop
46
ответ дан Suneel Kumar 18 марта '14 в 15:14
источник поделиться

Мое решение для решения этой проблемы:

git checkout -- <file>

Затем я мог бы перезаписать файл, используя:

git pull
30
ответ дан pabloasc 04 авг. '15 в 15:38
источник поделиться

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

  1. git checkout master
  2. git fetch origin
  3. git reset --hard origin/master
  4. git checkout -b newbranch
11
ответ дан Nikhil K R 05 февр. '14 в 9:24
источник поделиться

В недавнем 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
ответ дан kenorb 16 марта '16 в 15:41
источник поделиться

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

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

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

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

git stash
git pull
git stash pop

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

7
ответ дан BSB 14 янв. '18 в 16:19
источник поделиться

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

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

6
ответ дан Jeremy Holovacs 20 авг. '15 в 21:37
источник поделиться

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

git checkout file_to_overwrite
4
ответ дан Deepika Patel 27 июня '15 в 13:06
источник поделиться

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

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

3
ответ дан Will Vousden 14 янв. '13 в 15:21
источник поделиться

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

git checkout -- <path/file_name>

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

git pull origin master
3
ответ дан A H M Forhadul Islam 12 апр. '17 в 12:19
источник поделиться

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

git reset --hard
git pull origin master
2
ответ дан Gajen Sunthara 20 апр. '16 в 15:31
источник поделиться

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

git stash
git pull
git stash pop

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

2
ответ дан YanQing 19 апр. '17 в 14:49
источник поделиться

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

2
ответ дан Arkadiy 23 июня '16 в 23:36
источник поделиться

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

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

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

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

1
ответ дан AJ Macapaz 19 сент. '17 в 22:53
источник поделиться

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

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

git reset --hard
git pull

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

1
ответ дан Khemraj 20 мая '18 в 10:03
источник поделиться

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

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

Нам нужно внести изменения в более чем 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 берет грязное состояние вашего рабочего каталога - то есть ваши измененные отслеживаемые файлы и поэтапные изменения - и сохраняет его в стеке незавершенных изменений, которые вы можете повторно применить в любое время.

1
ответ дан STK 16 апр. '17 в 16:54
источник поделиться

Я игнорировал файл в своем репо, и когда я сделал 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
ответ дан Dmitry 14 марта '17 в 17:43
источник поделиться

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

git add
git checkout mybranch

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

0
ответ дан user60561 08 мая '17 в 17:38
источник поделиться

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

0
ответ дан Ta Quang Tu 21 мая '18 в 9:02
источник поделиться

git reset --hard && git clean -df

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

0
ответ дан Yamen Ashraf 13 июня '18 в 12:49
источник поделиться

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

0
ответ дан Munichong 24 янв. '18 в 0:53
источник поделиться

Это сообщение также может случиться, если используется 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
ответ дан c33s 17 мая '18 в 0:30
источник поделиться

Другие вопросы по меткам