在 git 冲突中,我目前可以执行以下操作:
git diff path/to/some/file.txt
Run Code Online (Sandbox Code Playgroud)
...查看差异后,通常我想做:
git checkout --theirs path/to/some/file.txt && git add path/to/some/file.txt
Run Code Online (Sandbox Code Playgroud)
每次编辑两条路径都很费力,所以我希望能够做到以下几点:
git checkout --theirs <ref> && git add path/to/some/file.txt
Run Code Online (Sandbox Code Playgroud)
其中<ref>指的是 file.txt。
有什么办法可以在 bash 中做到这一点?
有很多方法。
您可以在 (t)csh、bash 或 zsh 中使用历史扩展。!$扩展到上一个命令行的最后一个参数。
git checkout --theirs !$ && git add !$
Run Code Online (Sandbox Code Playgroud)
Bash、ksh 和 zsh 有一个变量$_,用于存储 shell 执行的最后一个简单命令的最后一个参数。
git checkout --theirs "$_" && git add "$_"
Run Code Online (Sandbox Code Playgroud)
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 -- "$@"
}
Run Code Online (Sandbox Code Playgroud)
或者使它成为一个独立的脚本并add-theirs = git_add_theirs在你的~/.gitconfig.
| 归档时间: |
|
| 查看次数: |
258 次 |
| 最近记录: |