提供相同的文件名作为两个命令的参数

提供相同的文件名作为两个命令的参数

对于 git 冲突,我目前可以这样做:

git diff path/to/some/file.txt

...在查看差异之后,通常我想做:

git checkout --theirs path/to/some/file.txt && git add path/to/some/file.txt

每次编辑两条路径都很费力,所以我希望能够执行以下操作:

git checkout --theirs <ref> && git add path/to/some/file.txt

其中<ref>指的是 file.txt。

有什么方法可以在 bash 中做到这一点吗?

答案1

有很多方法。

您可以使用历史扩展在 (t)csh、bash 或 zsh 中。!$扩展到上一个命令行的最后一个参数。

git checkout --theirs !$ && git add !$

Bash、ksh 和 zsh 有一个变量$_它存储 shell 执行的最后一个简单命令的最后一个参数。

git checkout --theirs "$_" && git add "$_"

Bash 和 zsh 有一个键盘快捷键Alt+.或 ,ESC .它可以插入上一个命令行的最后一个参数。

git checkout --theirs Alt+ .&& git add Alt+.

您可以将其填充到函数中。

git_add_theirs () {
  if [ "$#" -eq 0 ]; then set -- "$_"; fi
  git checkout --theirs -- "$@" && git add -- "$@"
}

或者将其设为独立脚本并add-theirs = git_add_theirs在您的~/.gitconfig.

相关内容