Мне действительно нравится решение Тима, однако иногда мне нравится возиться с vimdiff. Мое решение этой проблемы грубое, но оно работает для меня, потому что мне нравится vim.
Я установил vimdiff в качестве моего difftool, а затем для выборочного слияния я изменил ветку:
git difftool <branch> <file>
Затем я перехожу на панель с версией текущей ветви и редактирую оригинал в vim (иногда это не нужно, но иногда vimdiff открывает версию в / tmp) и отключаю режим только для чтения:
:e <file>
:set readonly!
Теперь я могу использовать инструменты исправлений vim, такие как do
и dp
, чтобы применять то, что я хочу, и вносить другие небольшие изменения по ходу работы. Когда я закончу, я сохраняю файл, выхожу из vim, а затем ставлю и фиксирую файл в git, как при обычном редактировании.
Как я уже сказал, это не особенно сложно, но очень мощно и все еще чисто в командной строке. Просто убедитесь, что вы добавили четкое сообщение о фиксации, поскольку git не будет автоматически включать в себя сообщение о слиянии.
пример vimdiff http://j.mp/1dZVllt