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

おすすめ購読元

博客园 - 司徒正美
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

阮一峰的网络日志

科技爱好者周刊(第 396 期):互联网通信的替代方案 科技爱好者周刊(第 396 期):互联网通信的替代方案 - 阮一峰的网络日志 科技爱好者周刊(第 395 期):软件开发的第三种方式 科技爱好者周刊(第 395 期):软件开发的第三种方式 - 阮一峰的网络日志 科技爱好者周刊(第 393 期):脑腐状态 科技爱好者周刊(第 392 期):axios 投毒与好莱坞式骗术 科技爱好者周刊(第 391 期):AI 的贫富分化 科技爱好者周刊(第 390 期):没有语料,大模型就是智障 套壳中国大模型撑起500亿美元估值?扒一扒 Cursor 的"套壳"疑云 科技爱好者周刊(第 389 期):未来如何招聘程序员 科技爱好者周刊(第 388 期):测试是新的护城河 零安装的"云养虾":ArkClaw 使用指南 科技爱好者周刊(第 387 期):你是领先的 科技爱好者周刊(第 386 期):当外卖员接入 AI 字节全家桶 Seed 2.0 + TRAE 玩转 Skill 科技爱好者周刊(第 385 期):马斯克害怕中国车企吗? 智谱旗舰 GLM-5 实测:对比 Opus 4.6 和 GPT-5.3-Codex 科技爱好者周刊(第 384 期):为什么软件股下跌 科技爱好者周刊(第 383 期):你是第几级 AI 编程 Kimi 的一体化,Manus 的分层 科技爱好者周刊(第 382 期):独立软件的黄昏 AI native Workspace 也许是智能体的下一阶段 科技爱好者周刊(第 381 期):中国 AI 大模型领导者在想什么 科技爱好者周刊(第 380 期):为什么人们拥抱"不对称收益" 科技爱好者周刊(第 379 期):《硅谷钢铁侠》摘录 我如何用 AI 处理历史遗留代码:MiniMax M2.1 升级体验 科技爱好者周刊(第 378 期):预测是新的互联网热点 科技爱好者周刊(第 377 期):14万美元的贫困线 科技爱好者周刊(第 376 期):太空数据中心的争议 科技爱好者周刊(第 375 期):一扇门的 Bug 终于有人做了 Subagent,TRAE 国内版 SOLO 模式来了 科技爱好者周刊(第 374 期):6GHz 的问题 VS Code 使用国产大模型 MiniMax M2 教程 科技爱好者周刊(第 373 期):数据模型是新产品的核心 国产大模型接入 Claude Code 教程:以 Doubao-Seed-Code 为例 科技爱好者周刊(第 372 期):软件界面如何设计 大模型比拼:MiniMax M2 vs GLM 4.6 vs Claude Sonnet 4.5 科技爱好者周刊(第 371 期):一个乐观主义者的专访 科技爱好者周刊(第 370 期):正确的代码高亮 错误处理:异常好于状态码 科技爱好者周刊(第 369 期):Tim 与罗永浩的对谈 科技爱好者周刊(第 368 期):不要这样管理软件团队 一天之内,智谱和 Anthropic 都发了最强编程模型 科技爱好者周刊(第 367 期):Nano Banana 的几个妙用 科技爱好者周刊(第 366 期):旧金山疯狂的 AI 广告 科技爱好者周刊(第 365 期):流量变现正在崩塌 科技爱好者周刊(第 364 期):最难还原的魔方 科技爱好者周刊(第 363 期):最好懂的神经网络解释 科技爱好者周刊(第 362 期):GitHub 工程师谈系统设计 科技爱好者周刊(第 361 期):暗网 Tor 安全吗?
最も簡単な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サーバーも構築できます。

六、参照リンク

(終)