Skip to content

Commit 9cc15bf

Browse files
committed
ダミーアドレスを Gitea の手順に変更
1 parent 4eca981 commit 9cc15bf

File tree

4 files changed

+108
-120
lines changed

4 files changed

+108
-120
lines changed

docs/.vitepress/config.mts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,14 @@ export default defineConfig({
4747
{ text: 'ブランチを生やす', link: '/text/chapter-2/grow-a-branch' },
4848
{ text: 'プルリクエストのマージ', link: '/text/chapter-2/merge' },
4949
{ text: '共同開発の基本', link: '/text/chapter-2/team-development' },
50+
{ text: 'メールアドレスの秘匿', link: '/text/chapter-2/hide-address' },
5051
{ text: 'コミットに署名する', link: '/text/chapter-2/get-verified' }
5152
]
5253
},
5354
{
5455
text: '発展',
5556
link: '/text/chapter-3/',
5657
items: [
57-
{ text: 'メールアドレスの秘匿', link: '/text/chapter-3/hide-address' },
5858
{ text: '.gitignore', link: '/text/chapter-3/gitignore' },
5959
{ text: 'コンフリクトの解決', link: '/text/chapter-3/conflict' },
6060
{ text: 'マージのしくみ', link: '/text/chapter-3/how-merging-works' },

docs/text/chapter-2/get-verified.md

Lines changed: 4 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2,33 +2,7 @@
22

33
本編の最後に、コミットに署名する方法について解説します。じつは、Git の仕組み上誰かに成り済ましてコミットをすることはとても簡単にできてしまいます。コミットに署名することで、そのコミットがあなたのものであると証明することができます。
44

5-
## Git とメールアドレス
6-
7-
Git では、開発に関わった個人を見分ける ID としてメールアドレスの文字列それ自体が使われています。[必要なツール](/text/chapter-1/requirements.html#git-の設定) の Git の設定にてターミナルに打ち込んだメールアドレスです。
8-
9-
リポジトリにおけるコミットやその他の操作の履歴にはこのメールアドレスが埋め込まれ、リポジトリが公開されている場合はアドレスも公開されます。ただし、Git やホスティングサービスによってこのアドレスに自動的に何かが送られてくることはありません。
10-
11-
:::tip コミットの埋め込み情報
12-
何かのリポジトリ(たとえば [traQ-S_UI](https://github.com/traPtitech/traQ_S-UI))をローカルにクローンしてきて、そこでターミナルを開いて以下を実行してみましょう。
13-
14-
```sh
15-
git log
16-
```
17-
18-
すると、歴代のコミットに付属する「コミットハッシュ」「作者の名前とメールアドレス」「作成日時」「コミットメッセージ」などの情報が以下のようなフォーマットで表示されます。
19-
20-
```
21-
commit aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
22-
Author: kitsne <[email protected]>
23-
Date: Sat Jan 1 12:00:00 2100 +0900
24-
25-
fix: このコミットメッセージはサンプルです
26-
```
27-
28-
`git log` の表示は Q キーを押すことで中断できます。このように、コミットに埋め込まれる作者名やメールアドレスなどの情報は公開リポジトリならば誰もが容易に閲覧できます。
29-
30-
一度コミットに埋め込まれた情報はあとで抹消することが困難です。GitHub などの公開リポジトリにコントリビュートする際、自分のメールアドレスを外部に見られたくないと感じる方は発展編の [メールアドレスの秘匿](/text/chapter-3/hide-address.html) を読んで適切な対策をとることをおすすめします。
31-
:::
5+
## 成り済まし
326

337
Gitea 上でリポジトリにコミットした人のアイコンなどを表示できればとても便利です。ところが Git(ソフトウェア)と traP Gitea(ホスティングサービス)は別個の存在なので、Git で行うコミットなどの操作に Gitea が介入することはできません。
348

@@ -37,6 +11,8 @@ Gitea 上でリポジトリにコミットした人のアイコンなどを表
3711
![](https://md.trap.jp/uploads/upload_c3c585adcf6538d92a3e16eaf23fdd2b.png)
3812
<p style="font-size: 12px; text-align: center; margin: -16px 0 20px 0">本人に許可を得てメールアドレスを借りています</p>
3913

14+
相手のアドレスがダミーアドレスでも成り済ましは可能です。すなわち、これは前章 [メールアドレスの秘匿](/text/chapter-2/hide-address.html) で触れたこととは別個の問題です。
15+
4016
## 署名の技術
4117

4218
コミットへの署名は公開鍵暗号という技術を用いて行います。コミットに署名するための仕組みには現在 SSH と GPG の 2 種類がありますが、ここでは SSH を用いた方法を説明します。
@@ -110,4 +86,4 @@ git config --global gpg.format ssh # SSH での署名を選択
11086

11187
---
11288

113-
次のページに Git 講習会本編のまとめがあります。
89+
次のページで Git 講習会本編はゴールです!
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
# メールアドレスの秘匿
2+
3+
ここからはあなたの Git デビューに黒歴史を作らないための老婆心みたいな章立てです。Git の操作としてはここまでの章ですでに十分ですが、Gitea や GitHub の公開リポジトリで作業をする際にぜひ覚えておいてほしいことを書いています。
4+
5+
## Git とメールアドレス
6+
7+
Git では、開発に関わった個人を見分ける ID としてメールアドレスの文字列それ自体が使われています。[必要なツール](/text/chapter-1/requirements.html#git-の設定) の Git の設定にてターミナルに打ち込んだメールアドレスです。
8+
9+
リポジトリにおけるコミットやその他の操作の履歴にはこのメールアドレスが埋め込まれ、リポジトリが公開されている場合はアドレスも公開されます。ただし、Git やホスティングサービスによってこのアドレスに自動的に何かが送られてくることはありません。
10+
11+
:::tip コミットの埋め込み情報
12+
何かのリポジトリ(たとえば [traQ-S_UI](https://github.com/traPtitech/traQ_S-UI))をローカルにクローンしてきて、そこでターミナルを開いて以下を実行してみましょう。
13+
14+
```sh
15+
git log
16+
```
17+
18+
すると、歴代のコミットに付属する「コミットハッシュ」「作者の名前とメールアドレス」「作成日時」「コミットメッセージ」などの情報が以下のようなフォーマットで表示されます。
19+
20+
```
21+
commit aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
22+
Author: kitsne <[email protected]>
23+
Date: Sat Jan 1 12:00:00 2100 +0900
24+
25+
fix: このコミットメッセージはサンプルです
26+
```
27+
28+
`git log` の表示は Q キーを押すことで中断できます。このように、コミットに埋め込まれる作者名やメールアドレスなどの情報は公開リポジトリならば誰もが容易に閲覧できます。
29+
:::
30+
31+
一度コミットに埋め込まれたメールアドレスはあとから抹消することが非常に困難です。従って、公開リポジトリに不用意にメールアドレスを埋め込むのはリスクと言えます。もちろん、リスクを弁えた上でメールアドレスの公開設定を変更しない人もいます。
32+
33+
:::info メールアドレスが ID だった時代
34+
35+
それぞれのメールアドレスは世界的にユニークであることが保証されているので、かつては個人を表す ID として公開・使用するのが一般的だったようです。コミットにメールアドレスが埋め込まれる仕様になっているのもそのときの慣習の名残といえます。
36+
37+
[SSH キーの登録](/text/chapter-1/gitea-ssh.html#ssh-%E3%82%AD%E3%83%BC%E3%81%AE%E7%94%9F%E6%88%90) において SSH キーを生成するにあたり、ユーザー名を用いて以下のコマンドを実行していただきました。
38+
```sh
39+
ssh-keygen -t ed25519 -C ユーザー名
40+
```
41+
42+
この「ユーザー名」にあたる部分にもメールアドレスを記述する文化が今も一般的です。この部分は公開鍵の末尾に単にラベルとして含まれるテキストであり、技術的にはなんでもよく、メールアドレスである必要はありませんが、2025 年現在の [GitHub Docs](https://docs.github.com/ja/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent) にもユーザー名の部分にメールアドレスを記述して SSH キーを生成するコマンド例が載っています。
43+
44+
しかしながら、現代ではメールアドレスが果たす ID としての役割は薄れ、むしろ不用意にさまざまな場所にメールアドレスを書くことがスパムや持ち主の再識別のリスクを高めています。そのため、この講習会は不要なメールアドレスの記入を避ける手順になっています。
45+
:::
46+
47+
## メールアドレスの秘匿
48+
49+
メールアドレスを公開したくないというニーズに応えるため、traP Gitea や GitHub は各ユーザーにダミーのメールアドレスを提供しています。コミットメールアドレスをこれに変更することで、個人的に使っているメールアドレスの公開を避けつつ Gitea アカウントとコミットをしっかりと紐づけることができます。
50+
51+
Gitea でダミーのメールアドレスを利用する方法を説明します。[プロフィール設定](https://git.trap.jp/user/settings) のページを開き、「メールアドレスを隠す」チェックボックスを見つけてチェックを入れてください。
52+
53+
![](https://md.trap.jp/uploads/upload_230ac119709bf6d24ec44cd12165da49.png)
54+
55+
ここにポインターをかざすと、上のような表示が出てきます。要は、あなたの個人的なメールアドレスではなく `ユーザー名@trap.jp` という無効なメールアドレスを用いてもよい、ということです。このアドレスはメールアドレスとしては機能しておらず、実際にメールを送りつけることはできません。
56+
57+
次に、ここに表示されているメールアドレスで Git を設定し直します。[必要なツール](/text/chapter-1/requirements.html#git-%E3%81%AE%E8%A8%AD%E5%AE%9A) の章で実行したコマンドの「メールアドレス」をダミーメールアドレスで置き換えたものです。
58+
59+
```sh
60+
git config --global user.email ユーザー名@trap.jp
61+
```
62+
63+
これで Git リポジトリを扱う際にはあなたの個人用メールアドレスではなくダミーメールアドレス `ユーザー名@trap.jp` が活用されるようになりました。あなたの個人用メールアドレスは今後コミットに埋め込まれることがなくなります。ただし、すでに埋め込まれてしまったメールアドレスを抹消・置換することは困難です(不可能とは言いませんが…)。一度でも公開リポジトリで作業をする前にこの章を追っておくと安心ですね。
64+
65+
## traP と GitHub 公開リポジトリ
66+
67+
ダミーメールアドレスの設定は、どちらかといえばあなたが traP Gitea ではなく GitHub で活動していく上でとても大切な設定です。なぜなら、traP Gitea のリポジトリは公開範囲が部内に限られる一方、GitHub の公開リポジトリは文字通り全世界に公開されているからです。
68+
69+
traP では、毎年 6 月から 7 月にかけて、主に新入 SysAd 班員を対象として [QSoC](https://q.trap.jp/channels/team/SysAd/QSoC) という自由参加のイベントが開かれます。このイベントは traQ などの traP 内製サービスの開発に貢献してみようという趣旨のものです。
70+
71+
traQ をはじめとする traP SysAd 班のサービスは全て GitHub 上で管理されており、ほとんどが一般に公開されています。従って、QSoC に参加する際は GitHub のアカウントを作成し、一般に公開されたリポジトリに貢献の足跡を残すことになります。SysAd 班での活動を考えているなら GitHub の公開リポジトリ上での開発は日常的なものになります。
72+
73+
:::tip traP Gitea が活用される場面
74+
75+
GitHub は CI/CD など開発に関する機能が多くて何かと便利なのですが、大きいファイルのアップロードに関する制約が多く、ゲーム開発に用いるには適さないことがあります。このため、ゲーム班やプロジェクトの活動ではしばしば Gitea にリポジトリが置かれています。
76+
77+
また、部外に公開すべきでない情報を扱う際も Gitea が用いられることがあります。たとえば traP のサークル規約の原本、役員会に関係する資料、合宿のしおりなどは Gitea に置かれています。
78+
:::
79+
80+
そのため、GitHub で同様にダミーのメールアドレスを利用する方法についてもここで説明しておきます。まだ GitHub のアカウントを持つ予定がなければ、ここは飛ばして大丈夫です。
81+
82+
GitHub の [E メールの設定](https://github.com/settings/emails) を開き、**Keep my email addresses private** にチェックを入れます。その下の **Block command line pushes that expose my email** にもチェックを入れておくと、ダミーでないメールアドレスでコミットのプッシュを試みたときにブロックしてくれます。
83+
84+
![](https://md.trap.jp/uploads/upload_eb48eee1fa4b71416a70d5dd830c3d70.png)
85+
86+
あとは同様に `git config` コマンドでメールアドレスを適用させればよいです。
87+
88+
あなたがもし GitHub アカウントを作った時は、真っ先にこの設定を有効にすることをおすすめします。「別にメールアドレスを埋め込むくらい大した問題じゃないでしょー」と思うなら、そう思えるくらい Git について理解を深めたときに戻すのでもよいでしょう。
89+
90+
:::warning GitHub と Gitea の設定の両立
91+
92+
Gitea のダミーアドレスの設定と GitHub のダミーアドレスの設定は競合します。たとえば、GitHub のダミーアドレスを `git config` でグローバルに設定すると、traP Gitea 側でコミットのメールアドレスからユーザーを特定できず、以下のようにアイコンが正しく表示されなくなります。
93+
94+
![](https://md.trap.jp/uploads/upload_cd347e3ea6e9506d8f224bd8686aa294.png)
95+
96+
コミットのメールアドレスの設定は、グローバルに効かせるほか、それぞれのリポジトリに対して個別で効かせることもできます。GitHub と Gitea のうちどちらか一方をメインで使っていく場合には、多く使う方のダミーアドレスをグローバルに設定しておいて、あまり使わない方のリポジトリには個別でローカル設定を書いておくとよいでしょう。
97+
98+
```sh
99+
git config user.email ダミーメールアドレス # --global をつけない
100+
```
101+
102+
GitHub と Gitea のどちらもよく使うようになった時は `~/.gitconfig` の内容を直書きし `includeIf` を用いて設定を分岐させる方法がおすすめですが、発展的な内容になるので割愛します。詳しいことは [#event/workshop/git/sodan](https://q.trap.jp/channels/event/workshop/git/sodan)[#random/sodan](https://q.trap.jp/channels/random/sodan) などで質問すると教えてもらえるはず。
103+
:::

0 commit comments

Comments
 (0)