git 初学者に教えたい git と github の tips


## はじめに

この記事は 某社の Advent Calendar 1日目の記事です。
こんにちは。 [mirko](https://qiita.com/mirko-san_fp) です。

## この記事で書くこと

この記事では、筆者が「 git / github を初めて使う人に、とりあえず深く考えないで初めから設定しておいてほしい…！」と思っていることを書きます。
git の基本操作などについては省略しています。

## git の tips

### git 2.28.0 以上をインストールして、デフォルトブランチ名を main にしよう

Windows マシンをご利用で Git for Windows で Git を新しく入れる方などは自動的に最新版が入るかと思うのであまり考慮しなくていいですが、 mac や linux の git がもともと入っているディストリビュージョンをご利用の方は「あっ、もう入っているし新しく入れなくていいじゃん」と思うこともあるかと思います。
ですが、後述する「デフォルトブランチ名を master から main に変更する社会的流れ」を踏まえると、 version 2.28.0 以上を入れて欲しいのです。

#### 「デフォルトブランチ名を master から main に変更する社会的流れ」 って何？

git のデフォルトブランチ名は、過去 **master** という名称がデフォルトでした。
他にも master / slave という単語を用いた抽象化はプログラミングの世界でいくつかありましたが、この単語について歴史的経緯により不快に思うユーザーがいるため、他の単語に変更しようという潮流が発生しました。

2020年6月に Software Freedom Conservancy と Git プロジェクトが [声明](https://sfconservancy.org/news/2020/jun/23/gitbranchname/) を出したり、 2020年10月に Github が [新しく作られるリポジトリのデフォルトブランチを main とする発表](https://github.blog/changelog/2020-10-01-the-default-branch-for-newly-created-repositories-is-now-main/) をしたりしています。

そのため、 git のデフォルトブランチ名を main にしたほうがいいのですが、 [デフォルトブランチ名の変更機能が追加](https://github.blog/2020-07-27-highlights-from-git-2-28/) されたのが 2.28.0 のため、アップデートすることをお勧めします。

#### git のアップデート方法について

Windows の人は多分 Git for Windows 、もしくは WSL2 で Ubuntu になるかと思いますので、 mac と Ubuntu について書きます。

##### mac の場合
何もわからない人はとりあえず homebrew で git 入れておけばいいと筆者は思っています。 `brew install git` しましょう。 homebrew って何？という方は以下をご覧ください。

https://qiita.com/zaburo/items/29fe23c1ceb6056109fd

##### ubuntu の場合
Ubuntu 20.04 の場合は git 2.25.1 までしか入りません。以下の記事を参考に ppa リポジトリを追加して最新の git を入れましょう。

https://qiita.com/cointoss1973/items/1c01837e65b937fc0761

#### デフォルトブランチ名を main にしよう

git 2.28.0 以上をインストールしたら `.gitconfig` に以下の設定を追記することで、デフォルトブランチの名前を main にすることができます。

```
[init]
  defaultBranch = main
```

これで、デフォルトブランチが master であることにより発生する諸問題にハマることが回避できます。

### git の config を分割しよう

git の config ファイルはデフォルトでは `.gitconfig` ですが、このファイルを分割することができます。 [^1]
個人的には `.gitconfig` のうち、複数のマシンで共有したいような内容は `.gitconfig` に書いて、 git リポジトリとして管理しておくことをお勧めします。別のマシンからその管理リポジトリを clone してくるだけで設定が共有できるためです。

特定の環境や、ディレクトリでしか使わないような設定は `.<任意の文字列>.gitconfig` のような別ファイルに書いて `.gitconfig` から以下のように include しましょう。

```
[include]
  path = ~/.work.gitconfig
```

## github の tips

### git の email 設定を github に登録しているメールアドレスにしよう

git の tips として書くか迷いましたが、 github 寄りな気がするのでこちらで。
git の commit をするために name と email の設定を初回に求められると思いますが、この設定を github に登録しているメールアドレス、もしくは github がホストしている no-reply メールアドレスにしてください。

この設定をしないと、 github の web で確認した時、自分のコミット情報と github のアカウントが紐づきません。

たとえば、 git コミット情報が github アカウントと紐づいていると、コミット一覧で以下のように github アカウント名とアイコンが表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2261737/cdfcfb4c-6568-96f2-45c6-eb56fb60d05b.png)

これが紐づいていないと、以下の `Junio C Hamano` 氏のコミットのように、アイコンが存在しない（し、名前をクリックしても github のユーザーページに飛ばない）コミットになります。

例: git 公式リポジトリの [v1.0.0a](https://github.com/git/git/commits/v1.0.0a) のログ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2261737/a6adb135-4a50-57d2-db37-dc729b55f234.png)

もし github アカウントのメールアドレスを公開したくない場合は、以下のページを参考に no-reply メールアドレスを使うと良いでしょう。

> Note: If you created your account on GitHub.com after July 18, 2017, your no-reply email address for GitHub is a seven-digit ID number and your username in the form of ID+username@users.noreply.github.com.

https://docs.github.com/ja/account-and-profile/setting-up-and-managing-your-github-user-account/managing-email-preferences/setting-your-commit-email-address#setting-your-commit-email-address-on-github

### github の SSH key の title は詳細につけよう

github を活用してくると、複数のマシンから個人アカウントを利用するシチュエーションがあります。
そのときは SSH 鍵を新しく作って Settings から追加することになると思いますが [^2] これが増えてくると、どこで何を使っていたのかわからなくなります。
もちろん鍵の突き合わせはできますが、めんどくさいので、初めから詳細な名前をつけておくことをお勧めします。
個人的には `OS-端末名` とかのレベルでいいと思います。例えば `mac-16inch2019` などです。 [^3]

これをすることにより、マシンを破棄した時などに不要な鍵の紐付けを削除しやすくなります。
（もちろん、気軽に鍵消しても新しく作ればいいだけの話なんですが。面倒じゃないですか）

## 最後に

以上、 git と github の tips でした。
良き git ライフを。


[^1]: git 1.7.10 以上である必要がありますが、 git 2.28.0 にすれば関係ないことです
[^2]: SSH 鍵の使い回しはやめた方がいいと思います
[^3]: 同じ世代の mac を複数個買うような人はもっとインテリジェントな名前をご自身でつけられることでしょう