Как я могу игнорировать ошибку на "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
onpull
команда для перебазирования текущей ветви поверх восходящей ветви после извлечения. Предупреждение должно исчезнуть, но есть риск, что вы получите некоторые конфликты, которые вам необходимо решить.
в качестве альтернативы вы можете проверить другую ветку с силой, а затем вернуться к
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 вам понадобятся локальные изменения:
для перезаписи локальных изменений одного файла:
git reset file/to/overwrite git checkout file/to/overwrite
заменить все локальные изменения (изменения во всех файлах):
git stash git pull git stash pop
также эта проблема может быть из-за того, что вы находитесь на ветке, которая не объединена с главной веткой.
иногда, ни один из них не работает. Досадно, из-за того, что я думаю, что будет работать удаление файлы затем потянуть. Не то чтобы я рекомендовал это решение, но если файл не существует, 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
Я получил следующую ошибку:ошибка: локальные изменения в следующие файлы будут переписаны слияния: мой файл.js Пожалуйста, зафиксируйте свои изменения или спрячьте их, прежде чем вы сможете объединить. Аборт
чтобы решить эту проблему, я сделал следующее
Яgit update-index --no-assume-unchanged myfile.js
git status
ина ветке мастер ваша ветка позади 'origin / master' по 4 коммита, и можно промотать. (используйте "git pull", чтобы обновить локальный ветка)
изменения, не поставленные для фиксации: (используйте "git add ..." обновлять что будет совершено) (используйте " git checkout -- ..." отбрасывать изменения в рабочем каталоге)
изменено: myfile.js
никаких изменений в commit (используйте "git add" и/или"git commit-a")
тогда я сделал
git checkout myfile.js
следовал поgit pull upstream master
. Эта пора операция git pull прошла успешно.
вот моя стратегия, чтобы решить проблему.
Постановка Задачи
нужно внести изменения в более чем 10 файлов. Мы пытались
PULL (git pull origin master)
, но мерзавец крикнул:ошибка: локальные изменения в следующие файлы будут переписаны по слиянию: пожалуйста, зафиксируйте свои изменения или спрячьте их, прежде чем вы сможете объединить.
мы пытались выполнить
commit
а тоpull
, но они не работают любой.решение
мы были в грязный этап на самом деле, потому что файлы были в "промежуточной области", а также в "индексной области", а некоторые были в "головной области", а также в "локальном каталоге Git". И мы хотели вытащить изменения с сервера.
проверьте эту ссылку для получения информации о различных этапах Git в ясной форме: этапы ГИТ
мы следовали следующему действия
git stash
(это сделало наш рабочий каталог чистым. Ваши изменения хранятся в стеке Git).git pull origin master
(вытяните изменения с сервера)git stash apply
(применены все изменения из стека)git commit -m 'message'
(совершенные изменения)git push origin master
(вытолкнул изменения на сервер)git stash drop
(падение стека)давайте разберемся, когда и зачем нужен прятать
если вы находитесь в грязный state, означает, что вы вносите изменения в свои файлы, а затем вы вынуждены, по какой-либо причине,тянуть или switch в другую ветку для какой-то очень срочной работы, поэтому в этот момент вы не можете тянуть или переключаться, пока не совершите свое изменение. Элемент
stash
команда здесь как Рука помощи.из книги ProGIT, 2-е издание:
часто, когда вы работаете над частью своего проекта, все в беспорядочное состояние, и вы хотите немного переключить ветви для работы что-то еще. Проблема в том, что вы не хотите делать фиксацию наполовину законченная работа, чтобы вы могли вернуться к этому вопросу позже. Этот ответом на этот вопрос является команда git stash. Припрятать берет грязное состояние вашего рабочего каталога, то есть измененные отслеживаемые файлы и поэтапные изменения-и сохраняет его в стеке незавершенных изменения, которые можно повторно применить в любое время.
Я столкнулся с этим при вытягивании из Мастера.
Как я справился с этим, используя Visual Studio;
- во-первых, я выполнил Undo commit на моем решении.
- затем я сделал процесс 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(-)