1

私のWebホストは、Gitを「サーバー」としてではなく、Linuxベースの(Debianだと思います)Webホスティングサーバーに「クライアント」としてインストールしました。

Windows 7 デスクトップ コンピューター経由で GitGUI を使用して、Web ホストの Git インストールに接続する方法はありますか?

4

1 に答える 1

3

Git の「クライアント」インストールと「サーバー」インストールの区別はほとんどありません。Git は、Git リポジトリを単独で提供できるプログラムを 1 つだけ提供します — git-daemon. また、認証を提供しないため、通常、公開アクセス可能なリポジトリを提供するマシンにのみインストールされます (free-for-all read-onlygit://プロトコルを使用)。

Git リポジトリへの「通常の」書き込みアクセスはすべて、他のソフトウェア (通常はサーバー (プロトコル用) またはサーバー (プロトコル用))によって仲介されます。このソフトウェアは、必要な認証と承認を実行し、低レベルの Git プログラムを呼び出してクライアント/サーバー データ交換を実行します。HTTP[S]http://SSHssh://

そのため、最初にリポジトリへのアクセス方法を決定する必要があります。

あなたの状況では、私は SSH を選択します: あなたの Web ホストは (おそらく) Linux を搭載した VPS であるため、SSH サーバーが既に稼働している可能性が高く、このためのアカウントが与えられているはずです (そうでない場合は、質問する時間)。

ストーリーの残りの部分は、ここで説明されています(素敵な写真付き)。唯一の違いは、github を使用しないため、公開 SSH キーを手動で VPS ホストに転送する必要があることです。

サーバー上で Git をホストする方法の詳細については、The Bookを参照してください (これHTTP[S]は、Git でのサポートの改善に関する後日の補遺です)。

Git での SSH の使用に関する更新。

実際、SSH 経由でアクセスする Git リポジトリをホストすることは、設定する内容 (シンプルなソリューション、または仮想化された Git ユーザーとアクセス権管理などを備えた注目度の高いサーバー) に応じて、非常に単純な場合もあれば複雑な場合もあります。

SSH を使用すると、Git は次のように動作します。

  1. クライアントは、ターゲット Git リポジトリをホストするマシンで実行されている SSH サーバー プロセスとの SSH 接続を実行します。通常、これはいわゆる公開鍵認証を使用して行われます。
  2. 接続が確立されると、クライアントは相手側に特別な Git プロセスを生成するように指示し、ローカル Git プロセスと通信します。SSH はそれらの交換 (認証および暗号化) を実行します。

さらに先に進むために習得する必要がある他の2つのビットがあります。

  • SSH はいくつかの「サービス」をサポートしますが (たとえば、SFTP — FTP の安全なバージョンであり、プレーンな TCP トンネルを作成します)、最も一般的な使用例はプロセスをリモートで開始することであり、最も一般的な場合はシェルです (つまり、結局のところ、SSH と名付けられた理由 — Secure SHell)。

    このようなリモート プロセスが開始されると、ログインしているユーザーの資格情報で動作します。そのため、SSH サーバーログインすると (「手動で」、または Git がこれを行います)、リモート サーバーでシェルが開始され、認証されたリモートユーザーの資格情報で動作します。

  • リモート リポジトリにアクセスしようとする前に、Git クライアントはそのリポジトリの URL を解析します。面倒な詳細はgit-fetchマニュアルに記載されていますが、簡単なことは次のような URL です。

    ssh://user@server/path/to/the/repo.git
    

    プロトコル部分、ユーザー、サーバー、およびリポジトリへのパスに分解されます。

    /path/to/the/repo.git
    

    このリポジトリへのパスは、サーバー上の物理パスです。そうです、それはとても簡単です。リポジトリの場所をGitに伝えるために、ある種の構成ファイルなどを微調整する必要はありません。代わりに、URLで指定するだけです。

    リポジトリ パス処理のやや高度なひねりは、特別なショートカットを使用してリモート ユーザーのホーム ディレクトリを参照できるようにすることです。これは、次のようなパスを使用して行われます

    /~/devel/repo.git
    

    これにより、Git はリモート ユーザーのホーム ディレクトリの下にある「devel」という名前のディレクトリを探し、そこで「repo.git」ディレクトリを探します。この方法は、Git リポジトリを保持するために特別なディレクトリを確保したくない場合に便利です。また、このアプローチは 1 人のプロジェクトに最適です。

    典型的な Linux ベースの OS では、ユーザーは/home階層の下にホーム ディレクトリを持っているため、ユーザーjohndoeは自分のホーム ディレクトリを持っています/home/johndoe。SSH 経由で対話的にログインした後、ホーム ディレクトリが何であるかを確認できます。

    cd
    pwd
    

    (最初のコマンドは現在のディレクトリをホーム ディレクトリに変更し、2 番目のコマンドは現在のディレクトリを出力します)。

したがって、最も単純なケースでは、次のようにすることができます。

  1. SSH 経由でサーバーにログインします。

  2. サーバー側のリポジトリをどこかに作成します。

    cd /var/tmp
    mkdir test.git
    cd test.git
    git init --bare
    
  3. ログアウト。

  4. このリモートをローカル リポジトリに追加します。

    git remote add test ssh://user@server/var/tmp/test.git
    
  5. このリモコンで作業します:

    git push test master
    

Git がサーバー上で正常に動作することを確認するには、次のようにしてみてください。

ssh user@server "git --version"

また

plink user@server "git --version"

Git for Windows に同梱されている OpenSSH クライアントではなく、PuTTY を使用している場合。

于 2013-04-15T16:32:43.180 に答える