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

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

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

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

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

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

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

19 ответов

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

git checkout HEAD^ file/to/overwrite
git pull
187
ответ дан 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.
248
ответ дан Daniel Hilgarth 14 янв. '13 в 15:17
источник поделиться

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

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

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

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

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

  • git stash
  • git merge origin/master
  • git stash pop
34
ответ дан Suneel Kumar 18 марта '14 в 15:14
источник поделиться

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

git checkout -- <file>

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

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

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

  • git checkout master
  • git fetch origin
  • git reset --hard origin/master
  • git checkout -b newbranch
7
ответ дан 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) и т.д. Также выше это легче запомнить.

6
ответ дан kenorb 16 марта '16 в 15:41
источник поделиться

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

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

5
ответ дан 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
источник поделиться

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

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

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

Это сработало для меня, чтобы отменить изменения на удаленном удаленном сервере и вытащить из gitub-источника.

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

Я столкнулся с этим, когда вытащил из мастера.

Как я справляюсь с этим. Использование Visual Studio,

  • Сначала я выполнил команду "Отменить" в своем решении.
  • Затем выполните процесс Git pull.

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

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

Если вы хотите сохранить производственные изменения на сервере, просто входите в новые элементы конфигурации, метод обработки выглядит следующим образом: git stash git pull git stash pop возможно, вы не используете всю операцию, вы можете знать, что вы можете сделать дальше

0
ответ дан 李赵杰 19 апр. '17 в 14:49
источник поделиться

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

git add
git checkout mybranch

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

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

Вот моя стратегия для решения проблемы. Это будет немного длинный пост, но я надеюсь, что это поможет большому числу людей, ищущих решения.

Заявление о проблемах

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

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

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

Решение

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

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

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

 - git stash ( this made our working directory clean. Your changes are stored on stack by GIT ) 
 - git pull origin master ( Pull the changes from the server ) 
 - git stash apply ( Applied all the changes from stack )  
 - git commit -m 'message' ( Committed the changes ) 
 - git push origin master ( Pushed the changes to the server ) 
 - git stash drop ( Drop the stack )

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

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

Из книги ProGIT 2nd Edition

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

Надеюсь, это будет полезно для вас, ребята.

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

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