Каков самый простой способ редактирования конфликтных файлов за один раз при использовании git и редактора, такого как Vim или textmate?
Я пытаюсь настроить немного
когда я набираю статус git в командной строке, я получаю список файлов, которые должны быть разрешены следующим образом:
# 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
но я не уверен, как вернуть это, используя только команды оболочки, или это проще всего перейдите в ruby или python, чтобы передать каждую строку через регулярное выражение, чтобы отфильтровать # both modified:
.
конечный результат, который я хочу, что-то вроде этого:
vim #{space_separated_list_of_files}
как вы это делаете?
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`"
должны делать то, что вы хотите!
знаете ли вы о команде git mergetool ? Это не открывает все файлы за один раз, но повторяет все необходимые файлы, которые могут быть только тем, что вам нужно. Вы даже можете использовать vim для слияния
git mergetool --tool=vimdiff