Что самый простой путь состоит в том, чтобы отредактировать конфликтовавшие файлы сразу при использовании мерзавца и редактора как Vim или textmate?

Я пытаюсь настроить немного

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

# Unmerged paths: #
#   (use "git reset HEAD <file>..." to unstage)
#   (use "git add <file>..." to mark resolution)
#
#   both modified:      apache2/templates/default/apache2.conf.erb
#   both modified:      bootstrap/attributes/default.rb
#   both modified:      iptables/metadata.rb
#   both modified:      kickstart/templates/default/ks.cfg.erb
#   both modified:      openssl/metadata.json
#   both modified:      postfix/metadata.json
#   both modified:      postfix/templates/default/main.cf.erb

Существует ли простой способ передать этот список путей к файлам к текстовому редактору, таким образом, можно отредактировать их, все в одном идут?

Я могу добраться до этого, например, путем простой передачи по каналу его через grep:

[17:37]:git status | grep "both modified"
#   both modified:      apache2/templates/default/apache2.conf.erb
#   both modified:      bootstrap/attributes/default.rb
#   both modified:      iptables/metadata.rb
#   both modified:      kickstart/templates/default/ks.cfg.erb
#   both modified:      openssl/metadata.json
#   both modified:      postfix/metadata.json
#   both modified:      postfix/templates/default/main.cf.erb

Но я не уверен, как возвратиться, это использование просто окружают команды, или является ли самым простым заскочить в рубин или Python, передать каждую строку через regexp, отфильтровать # both modified:.

Конечный результат, который я хочу, является чем-то вроде этого:

vim #{space_separated_list_of_files}

Как был бы Вы парни делать это?

8
задан Chris Adams 4 July 2010 в 07:49
поделиться

3 ответа

Вот пара псевдонимов, которые у меня есть в моем gitconfig, взятых из git wiki :

edit-unmerged = \
    "!f() { git ls-files --unmerged | cut -f2 | sort -u ; }; vim `f`"
add-unmerged = \
    "!f() { git ls-files --unmerged | cut -f2 | sort -u ; }; git add `f`"

Должен делать то, что вы хотите!

11
ответ дан 5 December 2019 в 11:22
поделиться

Самое короткое, что я могу придумать:

vim `git status|grep 'both modified'|cut -d: -f2`
2
ответ дан 5 December 2019 в 11:22
поделиться

Вы знаете о команде git mergetool? Это не открывает все файлы за один раз, а выполняет итерацию по всем необходимым файлам, которые могут быть только тем, что вам нужно. Вы даже можете использовать vim для слияния

git mergetool --tool = vimdiff

2
ответ дан 5 December 2019 в 11:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: