2

我使用密码使用 PuTTy 登录 git-shell。无论我在 git-shell(Debian linux 服务器上的受限登录 shell)中输入什么,都会产生类似“无法识别的命令”的响应。

git> git help -a
unrecognized command 'git'
4

1 回答 1

4

git-shell从设计上讲,是非常有限的。有关更多详细信息,请参见手册页

默认情况下,它只能运行几个命令,以允许推/拉操作。这是 git 服务器提供“安全”SSH 访问的一种方式,仅限于与 git 存储库交互。同样默认情况下,没有交互式登录访问。

请注意,只需使用 git-shell 进行推/拉/取操作,您不需要做任何特别的事情。它已经可以做这些事情了。如果你想做一些不寻常的事情,你只需要定义自定义命令。

您在评论中说您有一个~/git-shell-commands/目录,但它是空的。目录的存在将启用交互模式,因此您会收到git>提示。但是,commands 目录为空意味着没有可以运行的有效命令。在这种情况下,您唯一可以运行的就是exit离开 shell。

要使用git-shell,您需要在~/git-shell-commands. 究竟要创建什么取决于您。一个示例可能是创建list,并让该脚本返回服务器上可用存储库的列表。

如果您想使用“标准命令”,正如您在评论中指出的那样,那么我认为答案git-shell不是您正在寻找的工具。听起来您正在寻找常规的登录外壳。

示例自定义命令可能如下所示。这是list我上面建议的命令的实现。

#!/bin/bash

# Assuming all repositories are named `*.git`
for repo in $(ls -d *.git); do

    # Just in case one exists, ignore ".git"
    if [[ "$repo" != ".git" ]];
        # Trim off the extension
        echo $(basename $repo .git)
    fi

done

这篇博文中有几个例子。

于 2017-01-09T17:42:01.183 回答