Я зарегистрировался в некоторых изменениях в своем локальном репозитории, который я хочу продвинуть, но когда я делаю получение по запросу мерзавца, я добираюсь:
paul$ git pull
ошибка: неотслеженный рабочий древовидный файл 'documentation/Android/SwiftKey/buttons.xcf' был бы перезаписан слиянием. Прерывание
Мое рабочее дерево не содержит неотслеженных файлов:
paul$ git status
# On branch master
# Your branch and 'origin/master' have diverged,
# and have 2 and 26 different commit(s) each, respectively.
#
nothing to commit (working directory clean)
Фиксации, что я сумел обойтись не, касаются файла, на который это жалуется.
Я прочитал ответы, предлагающие, чтобы я сделал a git reset HEAD --hard
, но я не уверен, какой эффект, который будет иметь на фиксациях, которые я сделал?
Файл трогают не те коммиты, которые вы сделали, а те, которые вы тянете. Просмотрите удалённую ветку, которую вы отслеживаете, чтобы увидеть, что произошло. Например, git log master..origin/master
покажет все коммиты, произошедшие на origin/master с момента вашего последнего вытягивания. Согласно вашему выводу выше, их 26. Использование опции --name-status
покажет, какой коммит добавил файл.
Вам нужно переименовать нарушающий правила файл, выполнить pull, а затем переместить его обратно (перезаписав копию из репозитория). git diff filename
покажет вам, чем ваша копия отличается от той, которую кто-то другой зафиксировал в master. Затем вы можете зафиксировать различия или выбросить их с помощью git checkout filename
.
Вам нужно будет использовать git pull --rebase
для ребазинга ваших последних коммитов поверх коммитов в origin
. Как только git status
сообщит, что master находится впереди, а не расходится с origin/master, вы можете выполнять push.