对于 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
.