慣性聚合 関心のあるブログ、ニュース、テクノロジーを効率的に追跡
原文を読む 慣性聚合で開く

おすすめ購読元

博客园 - 司徒正美
V
V2EX
T
Tailwind CSS Blog
有赞技术团队
有赞技术团队
aimingoo的专栏
aimingoo的专栏
Apple Machine Learning Research
Apple Machine Learning Research
IT之家
IT之家
Blog — PlanetScale
Blog — PlanetScale
A
About on SuperTechFans
月光博客
月光博客
T
The Blog of Author Tim Ferriss
宝玉的分享
宝玉的分享
Martin Fowler
Martin Fowler
博客园 - 聂微东
The GitHub Blog
The GitHub Blog
V
Visual Studio Blog
WordPress大学
WordPress大学
酷 壳 – CoolShell
酷 壳 – CoolShell
Engineering at Meta
Engineering at Meta
GbyAI
GbyAI

阮一峰的网络日志

記事がありません

最も簡単なGitサーバー
阮一峰 · 2022-10-23 · via 阮一峰的网络日志

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

本日は 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サーバーも構築できます。

六、参照リンク

(終)