Git говорит мне тянуть, а затем совершать, а затем тянуть?
Я пытаюсь внести новые изменения, но у меня есть конфликтный файл. После попытки нажать, я получаю следующую ошибку:
Merge the remote changes (e.g. 'git pull') before pushing again. See the
'Note about fast-forwards' section of 'git push --help' for details.
Итак, нам нужно использовать git pull.
Я пытаюсь использовать git pull
, а затем получаю эту ошибку:
error: Your local changes to the following files would be overwritten by merge:
db/profile_edit.php
Please, commit your changes or stash them before you can merge.
Но когда я пытаюсь зафиксировать, я возвращаюсь к первой ошибке. Что мне делать? Изменения в удаленном репо являются более новыми, чем те, что находятся на моей локальной машине. Итак, как я могу открыть его с помощью инструмента diff и внести изменения, а затем сообщить git, что я внес изменения, чтобы он мог менять изменения?
Ответы
Ответ 1
Попробуйте сделать
$ git pull --rebase
Чтобы вытащить удаленные изменения перед вашим, а затем совершить. И посмотрите, работает ли он.
Если это не сработает, попробуйте это вместо:
$ git stash
$ git pull --rebase
$ git stash pop
Чтобы сохранить изменения в stash
, примените удаленные коммиты внутри своего рабочего репозитория, а затем снова примените свои изменения (сохраненные в stash
) в вашем рабочем репозитории.
Ответ 2
Во-первых, я думаю, что если бы вы были git add
, тогда git commit
, ваше местное репо было бы достаточно чистым, чтобы сделать git pull
.
Однако, если могут быть изменения, которые вы не хотите совершать, пока не увидите, что произошло в восходящем направлении, вы можете использовать git stash
. Он временно очистит ваш рабочий каталог и сохранит ваши изменения, поэтому вы можете потянуть (я бы порекомендовал git pull --rebase
избегать точек слияния), но это проблема личного вкуса. После того, как вы измените настройки восходящего потока, вы можете вернуть свои локальные изменения с помощью git stash pop
. После того, как вы очистите конфликты и избавитесь от ненужных изменений, вы можете добавить, зафиксировать, а затем, наконец, нажать.
Ответ 3
Вы путаетесь с командами.
git commit
сохраняет изменения в базе данных git
git pull
приносит удаленные коммиты в ваше репо
Вы пытаетесь тянуть с незафиксированными изменениями, поэтому git просит вас зафиксировать тех, кто сначала (или git stash
их), чтобы он мог объедините свои локальные изменения с удаленными.