[英]What's the simplest way to edit conflicted files in one go when using git and an editor like Vim or textmate?
我試着調整一下
當我在命令行輸入git status時,我得到一個需要解析的文件列表,如下所示:
# 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
但是我不確定如何使用shell命令返回它,或者是否最簡單的方法是放入ruby或python,通過正則表達式傳遞每一行,以過濾掉#both # both modified:
.
我想要的最終結果是這樣的:
vim #{space_separated_list_of_files}
你們這樣做怎么樣?
這是我在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`"
應該做你想要的!
最短的我能想到:
vim `git status|grep 'both modified'|cut -d: -f2`
你知道git mergetool命令嗎? 這並不是一次性打開所有文件,而是迭代所有需要的文件,這可能只是你需要的。 您甚至可以使用vim進行合並
git mergetool --tool = vimdiff
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.