0

我正在寻找别名git pushGit 中的实际命令,以便在提交到 GitHub 之前运行单元测试之类的东西。

这是我的config文件.git/

[alias]
  push = !echo "custom push"
  kk = !echo "hi" # => this works...

它似乎忽略了推动。这可能吗?如果这是不可能的,还有其他选择吗?

4

3 回答 3

1

我写了这个来对抗git push打印出我想运行但没有运行它的讨厌!是的,这是有原因的(你不应该将每一块垃圾都推送到远程),但我的远程是我的 GitHub 分支,我可能会遭受任何被推送到那里的垃圾。

这是基于Eugene Kay 的.bashrc(我从那里保留了cd但删除了which git对我不起作用的部分)。添加到.bashrc.zshrc品尝:

function git() {
  # Path to the `git` binary
  GIT="/usr/bin/git"

  # Sanity check
  if [ ! -f ${GIT} ]
  then
    echo "Error: git binary not found" >&2
    return 255
  fi

  # Command to be executed
  command=$1

  # Remove command from $@ array
  shift 1

  # Check command against list of supported commands
  case $command in
  "cd")
    cd $(git rev-parse --show-toplevel)/${1}
    ;;
  "push")
    if [ -z "$1" ]
    then
      $GIT push || $GIT push -u origin $($GIT rev-parse --abbrev-ref @)
    else
      $GIT ${command} "$@"
    fi
    ;;
  *)
    # Execute the git binary
    $GIT ${command} "$@"
    ;;
  esac

  # Return something
  return $?
}
于 2014-06-28T07:51:17.673 回答
1

由于与 push 命令冲突,您不能为 push 设置别名,但您可以尝试使用“pre-push”钩子,有关详细信息,请参阅以下补丁。

另一种方法是在 GitHub 上使用post-receive挂钩,您可以在其中配置它以向集成服务器发送 POST,该服务器将运行单元测试等并批准或拒绝更改。但是,根据您的设置,这可能不切实际。

于 2012-04-19T23:16:18.640 回答
0

我不会创建别名,而是使用 git 的 pre-commit 钩子。

http://book.git-scm.com/5_git_hooks.html

于 2012-04-19T23:06:31.420 回答