3

我想为每个与 git 服务器联系的命令 git push 和 pull 提示确认 [yes/no]。有没有办法包含任何命令/脚本来实现这一点?所以用户可以给出输入,之后只有 git 继续进行该操作。

4

2 回答 2

2

首先,我认为你不会因为这种变化而交到很多朋友。如果有人输入git pull,他已经证明他愿意联系远程服务器。在我看来,在这种情况下,没有必要用确认对话框来惹恼用户。

无论如何,如果你确认每个pulland push,钩子不是正确的工具,因为拉/推钩子只存在于服务器端。客户端没有pre-pull, post-pull,pre-pushpost-push钩子。所以,我们必须抛弃钩子的想法。

您可以为and命令取别名,以便用查询是否真的应该拉/推它们来包围它们。pullpush

查询很简单:

echo -n "really push? [y/n] "
read -s -n 1 really
if [[ $really == "y" ]]; then 
  # PULL/PUSH HERE
else 
  echo "aborting"
fi

不幸的是,您不能为别名使用相同的名称。所以,很容易想到

[alias]
    push = "!echo -n \"really push? [y/n]\";read -s -n 1 really;if [[ $really == \"y\" ]];then git push; else echo \"aborting\"; fi"

不起作用。

但是您还有另外两个选择来实现您想要的:

  • 使用 git bord 表示并调用别名safepush/safepull或类似的东西
  • .bashrc在你的for git pulland中设置一个别名git push(请参阅SU 上的这个问题以设置实际上是函数的多字别名
于 2012-06-27T11:59:34.710 回答
1

我相信您正在寻找Git hooks

不过,您必须自己将钩子放在那里。我认为您不能让用户将(客户端)钩子与其余代码一起拉动。

于 2012-06-26T13:11:21.417 回答