在git merge/rebase中编辑所有冲突的文件(特殊字符安全)



git rebase的中间,我有一个状态,如:

$ git status --short
M  lib/tmuxinator.rb
UU lib/tmuxinator/cli.rb
UU lib/tmuxinator/config.rb
A  spec/fixtures/TMUXINATOR_CONFIG/TMUXINATOR_CONFIG.yml
M  tmuxinator.gemspec

我如何用一个命令在我的文本编辑器中打开有冲突的文件(上面表示U) ?

解决方案必须使用n和文件名中的特殊字符

许多命令都有-z-0--null选项来产生/使用NUL终止的输出。

使用如下:

git status -sz  | sed -rnz 's/^(U.|.U) (.*)/2/p' | xargs -0 $EDITOR

或者作为gitconfig别名:

[alias]
  resolve=!"git status -sz  | sed -rnz 's/^(U.|.U) (.*)/\2/p' | xargs -0 $EDITOR #"

最新更新