我想在我的 .gitconfig 文件中进行更改,这样当我运行“git pull”时,它会以 echo 语句“请使用 git xpull 而不是 git pull”退出,这里 xpull 是我的别名?
或者是否可以在我的本地机器中的任何地方(而不是 .gitconfig 文件)?
我想在我的 .gitconfig 文件中进行更改,这样当我运行“git pull”时,它会以 echo 语句“请使用 git xpull 而不是 git pull”退出,这里 xpull 是我的别名?
或者是否可以在我的本地机器中的任何地方(而不是 .gitconfig 文件)?
不幸的是,我不相信 git 本身可以做你想做的事。git-config(1) 手册页说:
为了避免脚本使用的混乱和麻烦,隐藏现有 git 命令的别名将被忽略。
换句话说,您可以自由地为xpull创建一个 git 别名,但您实际上不能覆盖或包装pull本身。但是,您可以创建一个 shell 函数来包装对 git 的调用。
您可以将 git 包装在一个 shell 函数中,该函数将拦截对 git 的所有调用,检查关键字“pull”是否存在,并改写命令行以使用“xpull”。这个包装函数不是特别健壮,但它在临时测试中确实对我有用。
git () {
if [[ "$*" =~ $(echo '\bpull\b') ]]; then
git xpull
else
command git xpull "${@/pull/}"
fi
}
如果您愿意,可以用回显和非零返回状态替换对xpull的调用,但透明地包装行为似乎更明智。你的旅费可能会改变。
将脚本放在 中$SOMEDIR/git-pull
,$SOMEDIR
在你的 中$PATH
,然后:
chmod -x /usr/lib/git-core/git-pull
或git-pull
可执行文件位于系统上的任何位置。
使用短别名怎么样?它也会为您节省其他命令的时间
[alias]
st = status
pl = pull --no-edit