2010-06-24 5 views
5
$ git checkout to-branch 
$ git merge from-branch 
$ git status | grep unmerged 
# file1 unmerged 
# file2 unmerged 
# file3 unmerged 
$ vi file1 
$ git add . 

Eek! Я не хотел «добавить». Я хотел «git add file1»!Как отменить "git add." во время слияния?

Теперь я не могу получить поведение как:

$ git show :1:file2 

Я пробовал:

$ git reset file2 

и

$ git checkout -m file2 

, но ни один из этих возвращений file2 к "неслиянных" состояние , git status не показывает его как unmerged, и у меня нет доступа к «git show: 1: file2» и т. д. Я хочу вернуть файл обратно в невооруженное состояние.

Как я могу вернуться в состояние, в котором находился, прежде чем «добавить git». не теряя мои изменения в файле1?

ответ

10

(не проверено) Пробовали ли вы

git checkout -m /path/to/file2 
git checkout -m /path/to/file3 

?

При проверке путей из индекса, эта опция позволяет воссоздать конфликтное слияние в указанных путях

Если это не работает, вы можете иметь некоторые другие ответы на вопросе SO " How do I get my git merge conflicts back after merging incorrectly? "

+0

Спасибо. Это дает вам файл с конфликтами слияния, но он не обновляет все, что он использует, чтобы отслеживать конфликты слияния, чтобы статус git не показывал файл как немаркированный, а git show: 1: file2 и т. Д. Работа. Посмотрим на другой вопрос. –

+0

+1, Прохладный - я не знал об этой неясной особенности. Просто попробовал тест с ним, и он работает как рекламируемый. –

1

В случае, если кто все еще с этой проблемой (как я только сейчас), вы можете (сейчас) это сделать:

git update-index --unresolve file2 file3 
Смежные вопросы