1

我想在我的 .gitconfig 文件中进行更改,这样当我运行“git pull”时,它会以 echo 语句“请使用 git xpull 而不是 git pull”退出,这里 xpull 是我的别名?

或者是否可以在我的本地机器中的任何地方(而不是 .gitconfig 文件)?

4

3 回答 3

1

Git-Alias 不可能

不幸的是,我不相信 git 本身可以做你想做的事。git-config(1) 手册页说:

为了避免脚本使用的混乱和麻烦,隐藏现有 git 命令的别名将被忽略。

换句话说,您可以自由地为xpull创建一个 git 别名,但您实际上不能覆盖或包装pull本身。但是,您可以创建一个 shell 函数来包装对 git 的调用。

用 Shell 函数包装 Git

您可以将 git 包装在一个 shell 函数中,该函数将拦截对 git 的所有调用,检查关键字“pull”是否存在,并改写命令行以使用“xpull”。这个包装函数不是特别健壮,但它在临时测试中确实对我有用。

git () {
    if [[ "$*" =~ $(echo '\bpull\b') ]]; then
        git xpull
    else
        command git xpull "${@/pull/}"
    fi
 }

如果您愿意,可以用回显和非零返回状态替换对xpull的调用,但透明地包装行为似乎更明智。你的旅费可能会改变。

于 2012-07-19T07:43:49.470 回答
0

将脚本放在 中$SOMEDIR/git-pull$SOMEDIR在你的 中$PATH,然后:

chmod -x /usr/lib/git-core/git-pull

git-pull可执行文件位于系统上的任何位置。

于 2012-07-19T07:30:09.783 回答
0

使用短别名怎么样?它也会为您节省其他命令的时间

[alias]
    st = status
    pl = pull --no-edit
于 2014-04-30T21:44:16.920 回答