哪些默认命令在git-shell中有效?

时间:2017-01-09 11:36:38

标签: git git-shell

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

git> git help -a
unrecognized command 'git'

1 个答案:

答案 0 :(得分:0)

git-shell在设计上非常有限。有关详细信息,请参阅man page

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

请注意,只需使用git-shell执行 push / pull / fetch 操作,您就不需要做任何特殊操作。它已经可以做那些事了。如果你想做一些不寻常的事情,你只需要定义自定义命令。

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

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

如果你想在评论中指出使用“标准命令”,那么我认为答案是git-shell不是你正在寻找的工具。听起来你正在寻找一个常规的登录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

this blog post中有几个例子。