セットアップと設定
プロジェクトの取得と作成
基本的なスナップショット取得
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ適用
デバッグ
メール
外部システム
サーバー管理
ガイド
- gitattributes
- コマンドラインインターフェースの慣例
- 日常的なGit
- よくある質問 (FAQ)
- 用語集
- フック
- gitignore
- gitmodules
- リビジョン
- サブモジュール
- チュートリアル
- ワークフロー
- すべてのガイド...
管理
プラミングコマンド
- 2.18.1 → 2.49.0 変更なし
-
2.18.0
2018-06-21
- 2.11.4 → 2.17.6 変更なし
-
2.10.5
2017-09-22
-
2.9.5
2017-07-30
- 2.1.4 → 2.8.6 変更なし
-
2.0.5
2014-12-17
書式
chsh -s $(command -v git-shell) <user> git clone <user>@localhost:/path/to/repo.git
ssh <user>@localhost
説明
これはSSHアカウント向けのログインシェルで、Gitへの制限付きアクセスを提供します。pull/push機能を実装するサーバー側のGitコマンド、およびユーザーのホームディレクトリ内のgit-shell-commands
という名前のサブディレクトリに存在するカスタムコマンドのみの実行を許可します。
コマンド
git shellは-c
オプションの後に以下のコマンドを受け入れます
- git receive-pack <argument>
- git upload-pack <argument>
- git upload-archive <argument>
-
クライアントのgit push、git fetch、またはgit archive --remoteのリクエストをサポートするために、対応するサーバー側コマンドを呼び出します。
- cvs server
-
CVSサーバーを模倣します。詳細はgit-cvsserver[1]を参照してください。
~/git-shell-commands
ディレクトリが存在する場合、git shellはユーザーのホームディレクトリから"git-shell-commands/<command> <arguments>
"を実行することにより、他のカスタムコマンドも処理します。
インタラクティブな使用
デフォルトでは、上記のコマンドは-c
オプションでのみ実行可能です。シェルはインタラクティブではありません。
~/git-shell-commands
ディレクトリが存在する場合、git shellはインタラクティブに(引数なしで)実行することもできます。git-shell-commands
ディレクトリにhelp
コマンドが存在する場合、それが実行され、ユーザーに許可されている操作の概要が提供されます。その後、"git> "プロンプトが表示され、そこからgit-shell-commands
ディレクトリ内の任意のコマンドを入力するか、exit
と入力して接続を閉じることができます。
通常、このモードは、ユーザーがアクセス可能なリポジトリの一覧表示、リポジトリの作成、削除、名前変更、またはリポジトリの説明や権限の変更を許可するための管理インターフェースとして使用されます。
no-interactive-login
コマンドが存在する場合、それが実行され、インタラクティブシェルは中断されます。
例
インタラクティブログインを無効にし、代わりに挨拶を表示するには
$ chsh -s /usr/bin/git-shell $ mkdir $HOME/git-shell-commands $ cat >$HOME/git-shell-commands/no-interactive-login <<\EOF #!/bin/sh printf '%s\n' "Hi $USER! You've successfully authenticated, but I do not" printf '%s\n' "provide interactive shell access." exit 128 EOF $ chmod +x $HOME/git-shell-commands/no-interactive-login
git-cvsserverアクセスを有効にするには(git-shell-commands
ディレクトリを作成するとインタラクティブログインが許可されるため、通常は上記のno-interactive-login
の例が前提条件となります)
$ cat >$HOME/git-shell-commands/cvs <<\EOF if ! test $# = 1 && test "$1" = "server" then echo >&2 "git-cvsserver only handles \"server\"" exit 1 fi exec git cvsserver server EOF $ chmod +x $HOME/git-shell-commands/cvs
関連項目
ssh(1)、git-daemon[1]、contrib/git-shell-commands/README
Git
git[1] スイートの一部です