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

标签 git shell git-merge git-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 #"

关于git - 编辑 git merge/rebase 中的所有冲突文件(特殊字符安全),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40112190/

相关文章:

关于无法取消链接 git 对象的 git 警告。我该如何解决这个问题?

linux - $@ 在 shell 脚本中是什么意思?

linux - 如何在shell脚本中使用ftp制作远程文件夹的镜像

linux - 如何添加nohup? - 将标准输入重定向到程序和后台

git - merge 没有通用历史记录但具有通用文件的git存储库

rebase 后 Git 分支已经 fork ,为什么要 rebase?

git - git 补丁的上下文

git - conq : repository does not exist. 致命:无法从远程存储库读取

Git 冲突(重命名/重命名)

git - 从 gh-pages 中删除主文件和文件夹