プログラマーのコードリポジトリは、サーバーに一式托管する必要があります。そうすれば安全で、使いやすくなります。
本日は Git サーバーについてお話しします。

一、コード托管サービス
通常、Git サーバーを自分で構築するのは推奨されません。既存のサービス、つまりコード托管サービスを使用するのが良いです。それらはすべて無料です。
これらの中で、最後の Gitee は国内サービスですが、他はすべて海外サービスです。
これらの外部サービスについては、あまり詳しく説明しません。本文の重点はそれらではなく、もし Git サーバーを自分で構築しなければならない場合、どのようにすればよいかを議論したいと思います。
二、Git サーバーソフトウェア
自分で Git サーバーを構築する理由は、外のネットワークにアクセスしにくい、コードを他人のサーバーに置きたくない、あるいはカスタマイズされたニーズがあるからです。
この場合、オープンソースの Git サーバーソフトウェアを選ぶことができます。
これらのソフトウェアの中で、Gogs のインストールは最も簡単ですが、機能は比較的弱いです。機能が強いソフトウェアほど、インストールは複雑になります。
もし、コードをリモートに保存したいだけで、ウェブインターフェースや他の機能を気にしないなら、上記のソフトウェアをインストールする必要は全くありません。一行のコマンドで十分です。
三、Git リポジトリの SSH トランスポート
Git を知っている方なら、Git はデフォルトで SSH と HTTP/HTTPS の二つのトランスポートプロトコルをサポートしていることを知っているでしょう。
サーバーは通常 SSH を標準で搭載しているため、何もインストールせず、SSH のみでリモートサーバーにリポジトリをプッシュできるのです。
したがって、一行のコマンドで十分です。リモートサーバー上で同名の Git リポジトリを設定するだけで、サーバーは構築完了です。
$ git init --bare [仓库名].git
上記のコマンドの各部分の意味は以下の通りです。
(1)git init:Git リポジトリを初期化します。
(2)--bare:新しいリポジトリには作業ディレクトリは不要で、Git データディレクトリだけを建立します。
(3)[仓库名].git:リポジトリ名を指定します。例えば、リポジトリ名がexampleの場合、example.gitという名前の Git データディレクトリを建立します。
このコマンドを実行すると、最もシンプルな Git サーバーが完成します。その後、SSH 接続を通じて、ローカルのコードをこのリモート Git リポジトリにプッシュできるようになります。
四、操作デモ
以下に、全体の操作手順をデモします。
操作は二つの部分に分かれており、まずリモートサーバーで操作し、その後ローカルコンピューターで操作します。
4.1 リモートサーバー操作
の下記操作はすべてリモートサーバーで行われ、SSHでログインしていることを前提としています。SSHに不慣しい方々は、参考としてこの『SSH 入門』を参照してください。
リモートサーバーにログインする目的は、主に専用のユーザーを作成し、すべてのGit操作をそのユーザーを通じて行うことです。このステップは必須ではありませんが、後で操作を柔軟に行えるようにします(例えば、リポジトリを複数の人が共有できるようにするなど)。
$ sudo mkdir /home/git $ sudo useradd git $ sudo mkdir -m 700 /home/git/.ssh $ sudo cp ~/.ssh/authorized_keys /home/git/.ssh/
上記のコマンドの意味は以下の通りです。
(1)新しいユーザーのホームディレクトリを作成/home/git。
(2)新しいユーザーを作成、ユーザー名はgit。
(3)新しいユーザーのSSHディレクトリを作成/home/git/.ssh。
(4)現在のユーザーの公開鍵をgitユーザーにコピーし、キーでログインするため、詳しい説明は『SSH キーログイン』を参照してください。
パスワードのみでログインする場合、キーでログインしない場合、上記の第3ステップと第4ステップは不要ですが、gitユーザーにパスワードを設定する必要があります。コマンドは以下の通りです。
$ sudo passwd git
4.2 ローカルコンピュータの操作
その後の操作はすべてローカルコンピュータで行います。
前のセクションのリモートサーバーのIPアドレスは192.168.1.25であり、ローカルのGitリポジトリ名はexampleです。
$ ssh [email protected] git init --bare example.git
上記のコマンドで、ssh [email protected]は以gitのユーザーとして、リモートサーバーにログインします。後続の部分はSSHの一种の構文で、リモートサーバーで実行するコマンドを示しており、つまり新しいリモートGitデータディレクトリexample.gitを作成することです。
このコマンドを実行すると、Gitサーバーができあがり、その後コードをプッシュできるようになります。
$ cd example $ git remote add myServer [email protected]:example.git $ git push myServer master
上記のコマンドでは、まずローカルリポジトリに移動し、リモートサーバーにエイリアスを追加し、その後コードをプッシュします。
五、別の操作方法
上記の例ではgit init --bareコマンドを使用して、リモートサーバーに新しいGitデータディレクトリを作成しました。実際、Gitデータディレクトリは通常のディレクトリであり、直接ローカルコンピューターからコピーして移動することもできます。
$ scp -r example/.git [email protected]:/home/git/example.git
上記のコマンドではscpツールを使用して、ローカルのexampleリポジトリ内の.gitサブディレクトリを、リモートサーバーのexample.gitディレクトリにコピーします。これでGitサーバーも構築できます。
六、参照リンク
(終)












