【问题标题】:Replace git pull with git up用 git up 替换 git pull
【发布时间】:2015-10-02 17:12:08
【问题描述】:

我使用git up是为了避开merge bubbles,但有时我不小心发出了git pull

git up 系统地替换git pull 的最佳方法是什么?

【问题讨论】:

  • 谢谢@Anatoly,你知道任何 git 特定的方式吗?例如 .gitconfig 中的一些配置?
  • 与其避开pull,不如将​​其配置为更符合您的喜好?您可以将git pull --rebase设置为默认值。
  • git pull 替换为更多而没有能力只做 git pull 似乎是一个非常糟糕的主意.我可以理解 git-up 的原因,但一直在使用它?不太确定……
  • @poke:我确实认为您的评论非常有用,所以在我的回答中,我决定编写一个函数,要求您在执行之前确认 git pull,但仍然让您有机会如果你真的想使用它。

标签: git git-pull


【解决方案1】:

git-config 文档中所述,无法为现有的 git 命令设置别名。

我们可以使用 bash 功能,要求您确认是否要实际使用 git pull 命令,并为您提供改用 git up 的机会:

function git() {
    if [[ $@ == "pull" ]]; then
        read -p "Do you want to [p]ull, [u]p or [a]bort? " yn
        case $yn in
            [Pp]* ) command git pull;;
            [Uu]* ) command git up;;
            * ) echo "bye";;
        esac
    else
        command git "$@"
    fi
}

示例

$ git pull
 Do you want to [p]ull, [u]p or [a]bort? u
 Fetching origin
 master up to date
$ git pull
 Do you want to [p]ull, [u]p or [a]bort? p
 Already up-to-date.
$ git pull
 Do you want to [p]ull, [u]p or [a]bort? a
 bye

【讨论】:

  • 我认为在git pull 上使用附加参数(可以在pull 命令之前或之后)会失败。
  • @KeithThompson 如果git pull 带有附加参数,通常意味着您想要执行 git pull(否则完成可能会非常混乱)。所以这是我编写脚本时的预期行为。
  • 而且您使用的是[[ ... ]],而不是[ ... ],所以它不会像我最初认为的那样表现不佳。
【解决方案2】:

作为我事实上的导师曾经说过

我没有定义别名,我输入了整个命令,以免最终忘记它们。

在其他福特,就这样做

git fetch
git rebase origin/master  # fails due to local changes
git stash
git rebase origin master
git stash pop

是的,需要大量输入。这不是一个错误,这是一个功能。如果/当某个步骤失败时,您必须检查为什么

它迫使你思考你的工作。和make small commits with long commit messages一样。

【讨论】:

    猜你喜欢
    • 2014-01-03
    • 2015-09-26
    • 2020-03-25
    • 2021-11-17
    • 2012-09-10
    • 2015-01-02
    • 2017-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多