Дай мне сказать, чтобы вытащить, потом совершить, затем вытащить? - PullRequest
10 голосов
/ 21 июля 2011

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

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.

Но, когда я пытаюсь зафиксировать, я возвращаюсь к первой ошибке. Что я должен делать? Изменения в удаленном репо новее, чем на моей локальной машине. Итак, как мне открыть его с помощью инструмента сравнения и внести изменения, а затем сказать git, что я внес изменения, чтобы они давали мне изменения?

Ответы [ 3 ]

23 голосов
/ 21 июля 2011

Попробуйте сделать

$ git pull --rebase

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

Если это не работает, попробуйте вместо этого:

$ git stash
$ git pull --rebase
$ git stash pop

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

8 голосов
/ 21 июля 2011

Во-первых, я думаю, что если бы вы набрали git add, а затем git commit, ваше локальное репо было бы достаточно чистым, чтобы сделать git pull.

Однако, если могут быть изменения, которые вы не хотите вносить, пока не увидите, что произошло в восходящем потоке, вы можете использовать git stash. Он временно очистит ваш рабочий каталог и сохранит ваши изменения, так что вы можете потянуть (я бы порекомендовал git pull --rebase, чтобы избежать точек слияния - но это проблема личного вкуса). После того, как вы извлекли изменения из основной ветки разработки, вы можете вернуть свои локальные изменения, используя git stash pop. После того, как вы очистите конфликты и избавитесь от ненужных изменений, вы можете добавить, зафиксировать и, наконец, нажать.

5 голосов
/ 21 июля 2011

Вы путаетесь с командами.

git commit сохраняет изменения в базе данных git git pull приносит удаленные коммиты в ваш репозиторий

Вы пытаетесь вытянуть с незафиксированными изменениями, поэтому git просит вас зафиксировать первых (или git stash их), чтобы объединить ваши локальные изменения с удаленными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...