🙄

GitHub でコードを管理し始めるときにやること

2021/10/17に公開

Git & GitHub でコードを管理し始める際の一連の流れと気になった点をまとめておく。
Git & GitHub の使い方のより細かい説明は以下も参考にすると良い。

1. Make a Repository on GitHub

ローカルの git project から直接 GitHub repository を作ることはできない (つまり git commit だけで GitHub repository も作ってくれるような機能はない) ため、まず GitHub の GUI から新しい repository を作成する[1]

その際、既存のコードを新たに GitHub で管理したい場合は何も含めずに一旦空のリポジトリを作る[2]
なお、入力が簡単なため GitHub の repository 名では kebab-case (小文字 & '-' 区切り) がよく使われる

2. Set Authentication

現状、CLI から GitHub にアクセスする際の通信方法は以下の 2 通りに限られている[3]

  1. HTTPS 通信 : GitHub の personal access token を用いる
  2. SSH 通信 : public/private key を用いる

1 の方法の場合、毎回 personal access token の入力が必要になり面倒なため、今回は 2 の方法で通信することにする。

2.1 Make a ssh key

まず、GitHub の公式ドキュメント Generating a new SSH key and adding it to the ssh-agent を参考に SSH 通信用の鍵を作成する。

$ ssh-keygen -t ed25519 -C "your_email@example.com"
> Generating public/private ed25519 key pair.

この際、passphrase は入力することが推奨されている。

鍵の作成時に passphrase を登録し ssh の度に passphrase を入力したくない or 鍵を ~/.ssh 以外に作成した場合、ssh-agent に秘密鍵を登録する必要がある。

$ eval "$(ssh-agent -s)"
> Agent pid 59566
$ ssh-add ~/.ssh/id_ed25519

eval "$(ssh-agent -s)" のコマンドは ssh-agent を立ち上げ ssh-add を行うのに必要な環境変数を設定してくれているため、シェルが終了するごとに再度環境変数の設定が必要である。
しかし、シェルを立ち上げる度に ssh-agent を起動していると大量の ssh-agent が起動してしまうため注意。

2.2 Registry the ssh key

作成した公開鍵を Adding a new SSH key to your GitHub account を参考にして GUI から GitHub に登録する。
その後、以下のコマンドで疎通確認ができれば設定完了。

$ ssh -T git@github.com
> Hi [username]! You've successfully authenticated, but GitHub does not provide shell access.

3. Register and Push Local Files

GitHub で管理したい directory に移動し、以下のコマンドを実行する。

$ git init
$ git remote add origin [repository url]
# 間違えてしまった場合は以下で origin を削除
$ git remote rm origin

Git に名前とメールアドレスを登録しておくと、GitHub 上で誰がファイルを変更したかを確認できるようになるため、設定しておくとよい。
なお、これらの名称は repository の所有者と一致している必要はない。

$ git config --global user.name 'username'
$ git config --global user.email 'example@gmail.com'

最後に好きな名前で branch を作成して remote repository に push すればよい。

$ git checkout -b [branch name]
$ git add .
$ git commit -m "first commit"
$ git push origin

4. Git Submodule

Git repository の中でさらに他の git repository を管理したいときは git submodule というコマンドを使う。
以下のコマンドを用いて git repository 内で管理したい他の repository を追加すればよい。

$ git submodule add [URL] [directory name]

以降、この追加した directory に移動して git 系のコマンドを叩けば追加した submodule のみに対して当該の git コマンドが実行される。
ただし、submodule の外側の directory で branch などの変更をした場合、その変更は submodule には自動的に更新されない。
そのため、submodule の外側で checkout をした場合、submodule を同期するためには

$ git submodule update

というコマンドを叩く必要がある。

脚注
  1. 正確には GitHub CLI を用いて CLI から作成することもできる ↩︎

  2. 空の repository は git pullgit clone ができないので、git pull から始めたい場合は LICENSE, README.md, .gitignore のうち少なくとも 1 つを含めるようにして GitHub repository を作成する ↩︎

  3. About authentication to GitHub - Authenticating with the command line ↩︎

Discussion