GitHub でコードを管理し始めるときにやること
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]。
- HTTPS 通信 : GitHub の personal access token を用いる
- 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
というコマンドを叩く必要がある。
-
正確には GitHub CLI を用いて CLI から作成することもできる ↩︎
-
空の repository は
git pull
やgit clone
ができないので、git pull
から始めたい場合はLICENSE
,README.md
,.gitignore
のうち少なくとも 1 つを含めるようにして GitHub repository を作成する ↩︎ -
About authentication to GitHub - Authenticating with the command line ↩︎
Discussion