簡體   English   中英

使用git和像Vim或textmate這樣的編輯器時,一次編輯沖突文件的最簡單方法是什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM