Я сделал a git stash pop
и закончился с конфликтами слияния. Я удалил файлы из файловой системы и сделал a git checkout
как показано ниже, но это думает, что файлы все еще не объединяются. Я затем пытался заменить файлы и делать a git checkout
снова и тот же результат. Я событие пытался вызвать его с -f
флаг. Любая справка ценилась бы!
chirag-patels-macbook-pro:haloror patelc75$ git status
app/views/layouts/_choose_patient.html.erb: needs merge
app/views/layouts/_links.html.erb: needs merge
# On branch prod-temp
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: db/schema.rb
#
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# unmerged: app/views/layouts/_choose_patient.html.erb
# unmerged: app/views/layouts/_links.html.erb
chirag-patels-macbook-pro:haloror patelc75$ git checkout app/views/layouts/_choose_patient.html.erb
error: path 'app/views/layouts/_choose_patient.html.erb' is unmerged
chirag-patels-macbook-pro:haloror patelc75$ git checkout -f app/views/layouts/_choose_patient.html.erb
warning: path 'app/views/layouts/_choose_patient.html.erb' is unmerged
См. man git merge (КАК УСТРАНИТЬ КОНФЛИКТЫ):
Увидев конфликт, вы можете сделать две вещи:
Решить не сливаться. Единственная очистка, которая вам потребуется, это сброс индексного файла на коммит HEAD для отмены 2. и очистка изменений рабочего дерева, сделанных 2. и 3.; для этого можно использовать git-reset --hard.
Разрешить конфликты. Git пометит конфликты в рабочем дереве. Отредактируйте файлы и git добавит их в индекс. Используйте git commit, чтобы завершить сделку.
И при TRUE MERGE (чтобы увидеть, к чему относится 2. и 3.):
Когда не очевидно, как согласовать изменения, происходит следующее:
Указатель HEAD остается прежним.
Ссылка MERGE_HEAD устанавливается так, чтобы указывать на голову другой ветви.
Пути, которые объединились чисто, обновляются как в индексном файле, так и в рабочем дереве.
...
Итак: используйте git reset --hard
, если вы хотите удалить изменения тайника из вашего рабочего дерева, или git reset
, если вы хотите просто очистить индекс и оставить конфликты в рабочем дереве для ручного слияния.
В разделе man git stash (OPTIONS, pop) вы можете прочитать в дополнение:
Применение состояния может закончиться неудачей из-за конфликтов; в этом случае оно не удаляется из списка stash. Вам нужно разрешить конфликты вручную и после этого вызвать git stash drop вручную.