覆盖'git pull'以使用echo语句退出

时间:2012-07-19 07:18:59

标签: git git-config

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

OR是否可以在我的本地计算机中的任何位置(而不是.gitconfig文件)?

3 个答案:

答案 0 :(得分: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
 }

如果您愿意,可以使用echo和非零返回状态替换对 xpull 的调用,但是透明地包装行为似乎更合理。您的里程可能会有所不同。

答案 1 :(得分:0)

$SOMEDIR/git-pull中放置一个脚本,$SOMEDIR位于$PATH,然后:

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

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

答案 2 :(得分:0)

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

[alias]
    st = status
    pl = pull --no-edit