Как игнорировать ошибку в "git pull" о моих локальных изменениях, которые будут перезаписаны слиянием?
Как игнорировать следующее сообщение об ошибке на git pull?
ваши локальные изменения в следующих файлах будут перезаписаны merge
что если я хочу перезаписать их?
Я пробовал такие вещи, как git pull -f
, но ничего не работает.
чтобы быть ясным, я хочу только перезаписать определенные изменения, а не все.
25 ответов
если вы хотите удалить все локальные изменения из рабочей копии, просто спрячьте их:
git stash save --keep-index
если они вам больше не нужны, теперь вы можете бросить эту заначку:
git stash drop
если вы хотите перезаписать только определенные части ваших локальных изменений, есть две возможности:
- зафиксируйте все, что вы не хотите перезаписывать, и используйте метод выше для остальных.
- использовать
git checkout path/to/file/to/revert
для изменения, которые вы хотите перезаписать. Делать уверен, что файл не находится в стадии черезgit reset HEAD path/to/file/to/revert
.
хорошо с помощью двух других ответов я придумал прямое решение:
git checkout HEAD^ file/to/overwrite
git pull
это работает для меня, чтобы переопределить все локальные изменения и не требует идентификации:
git reset --hard
git pull
вот решение, которое отбрасывает поэтапные изменения:
git reset file/to/overwrite
git checkout file/to/overwrite
вы можете либо зафиксировать изменения перед слиянием, либо сохранить их:
git stash save
git merge origin/master
git stash pop
мое решение для решения этой проблемы было:
git checkout -- <file>
тогда я мог бы перезаписать файл через:
git pull
если ваш репозиторий содержит несколько файлов, которые удаляются из master
:
git checkout master
git fetch origin
git reset --hard origin/master
git checkout -b newbranch
в недавнем Git вы можете добавить -r
/--rebase
on pull
команда для перебазирования текущей ветви поверх восходящей ветви после извлечения. Предупреждение должно исчезнуть, но есть риск, что вы получите некоторые конфликты, которые вам необходимо решить.
в качестве альтернативы вы можете проверить другую ветку с силой, а затем вернуться к master
снова, например:
git checkout origin/master -f
git checkout master -f
затем потяните его снова, как обычно:
git pull origin master
использование этого метода может сэкономьте время от тайника (git stash
) и потенциальные проблемы с разрешениями, сброс файлов (git reset HEAD --hard
), удаление (git clean -fd
) и т. д. Кроме того, выше это легче запомнить.
эта проблема заключается в том, что вы внесли изменения локально в файл / s и тот же файл/S существует с изменениями в репозитории Git, поэтому перед pull / push вам понадобятся локальные изменения stash:
для перезаписи локальных изменений одного файла:
git reset file/to/overwrite
git checkout file/to/overwrite
заменить все локальные изменения (изменения во всех файлах):
git stash
git pull
git stash pop
также эта проблема может быть из-за того, что вы находитесь на ветке, которая не объединена с главной веткой.
иногда ничего из этого не работает. Досадно, из-за вещи LF я думаю, что будет работать удаление файлы затем потянуть. Не то чтобы я рекомендовал это решение, но если файл не существует, git не будет бесполезно сообщать вам, что ваши изменения (которые могут даже не быть изменениями) будут переопределены и позволят вам продолжить.
используйте на свой страх и риск.
Если вы хотите перезаписать определенные изменения, вам нужно каким-то образом сказать ему, какие из них вы хотите забыть.
вы можете попробовать выборочно хранить изменения, которые вы хотите отказаться от использования git stash --patch
и затем бросив эту заначку с git stash drop
. Затем вы можете вытащить удаленные изменения и объединить их как обычно.
лучший способ решить эту проблему:
git checkout -- <path/file_name>
после этого вы можете перезаписать файл с:
git pull origin master
У меня был особый случай этого: у меня был файл с --assume-unchanged на нем. Его было трудно обнаружить, так как git status
команда не показывала никаких изменений
это сработало для меня, чтобы отбросить изменения на живом удаленном сервере и вытащить из системы управления версиями GitHub:
git reset --hard
git pull origin master
Если вы хотите сохранить изменения на сервере, просто сливаются в новый элемент конфигурации. Метод обработки выглядит следующим образом:
git stash
git pull
git stash pop
возможно, вы не выполняете все операции. Ты знаешь, что делать дальше.
git stash save --keep-index
не работал для меня.
ниже команда работает, как ожидалось.
git reset --hard
git pull
он переопределяет все локальные изменения, если они вам не нужны.
я игнорировал файл в моем РЕПО, и когда я это сделал git pull upstream master
Я получил следующую ошибку:
ошибка: локальные изменения в следующие файлы будут переписаны слияния: myfile.Яш Пожалуйста, зафиксируйте свои изменения или спрячьте их, прежде чем вы сможете объединить. Аборт
чтобы решить это, я сделал следующее
git update-index --no-assume-unchanged myfile.js
Я git status
и
на ветке master ваша ветка позади "origin / master" на 4 коммита, и можно быстро перемотать. (используйте "git pull" для обновления локального бранч)
изменения, не поставленные для фиксации: (используйте " git add ..." обновлять что будет совершено) (используйте "git checkout -- ..." отбрасывать изменения в рабочем каталоге)
изменено: myfile.js
никаких изменений для фиксации (используйте" git add "и/или"git commit-a")
тогда я сделал git checkout myfile.js
следовал по git pull upstream master
. Эта пора операция git pull была успешной.
вот моя стратегия решения проблемы.
Постановка Задачи
нужно внести изменения в более чем 10 файлов. Мы пытались!--0-->, но мерзавец крикнул:
ошибка: локальные изменения в следующие файлы будут переписаны путем слияния: пожалуйста, зафиксируйте свои изменения или спрячьте их, прежде чем сможете объединить.
мы пытались выполнить commit
а то pull
, но они не работают любой.
решение
мы были в грязный этап на самом деле, потому что файлы были в "промежуточной области" a.к."индексная область" и некоторые из них находились в "головной области" a.к."локальный каталог Git". И мы хотели забрать изменения с сервера.
проверьте эту ссылку для получения информации о различных этапах Git в ясной форме: этапы GIT
мы следовали следующему шаги
-
git stash
(это сделало наш рабочий каталог чистым. Ваши изменения хранятся в стеке Git). -
git pull origin master
(вытащите изменения с сервера) -
git stash apply
(применены все изменения из стека) -
git commit -m 'message'
(внесенные изменения) -
git push origin master
(передвинул изменения на сервер) -
git stash drop
(падение стека)
давайте поймем, когда и почему вам нужно тайник
если вы находитесь в грязный состояние, означает, что вы вносите изменения в свои файлы, а затем вы вынуждены, по любой причине,тянуть или переключатель в другой филиал для очень срочной работы, поэтому в этот момент Вы не можете тянуть или переключаться, пока не совершите изменение. The stash
команда здесь как Рука помощи.
из книги ProGIT, 2-е издание:
часто, когда вы работаете над частью своего проекта, все в грязное состояние, и вы хотите немного переключить ветви, чтобы работать что-то еще. Проблема в том, что вы не хотите делать фиксацию наполовину законченная работа, чтобы вы могли вернуться к этому позже. Этот ответом на эту проблему является команда git stash. Припрятать берет грязное состояние вашего рабочего каталога, то есть измененные отслеживаемые файлы и поэтапные изменения-и сохраняет его в стопке незавершенных изменения, которые можно применить в любое время.
Я столкнулся с этим при вытягивании из Мастера.
Как я справился с этим, используя Visual Studio;
- во-первых, я выполнил отмену фиксации на моем решении.
- затем я сделал процесс git pull.
надеюсь, что это помогает!
Если эта ошибка из-за окончания строк,
git add
git checkout mybranch
будет работать. Я не совсем понимаю, почему это работает.
это сообщение также может произойти, если 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(-)
Я пробовал, и это успешно, прежде чем тянуть, пусть зафиксировать все файлы, которые вы не зафиксировали, тогда вы не получите эти сообщения от AS.