mecobalamin’s diary

人間万事塞翁が馬

https://help.hatenablog.com/entry/developer-option

wslでgithubを使う

wslでgit hubを使えるようにした

やったこと

  1. gitのアップデート
  2. git configの設定
  3. sshの設定
  4. githubにpush
  5. sshプロトコル通信に変更

主にこちらのサイトを参考にさせてもらった
qiita.com

以下のGitHubのアカウントを持っているものとする
アカウント名: hogefuga
メールアドレス: hogehoge@fugafuga.com

1. gitのアップデート

新しいパッケージリストを取得後にgitをインストールする

$ sudo apt-get update
$ sudo apt-get install git


2. git configの設定

こちらのサイトを参考にさせてもらった
qiita.com

wslのコマンドラインで以下のコマンドを実行する

$ git config --global user.name "hogefuga"
$ git config --global user.email "hogehoge@fugafuga.com"
$ git config --global pull.rebase false
$ git config --global core.editor "code --wait"

1行目と2行目でgithubのアカウントとメールアドレスの登録を行う
3行目はpullの挙動に関するものらしい
4行目はvscodeをエディターとして登録する


3. sshの設定

2.で参考にしたサイトによると

SSH認証 ... GitHubに公開鍵を登録し、自分のPCに登録した秘密鍵と照合して認証する方法。初期設定さえすれば、毎回のアカウント名・トークンの入力は必要ない。

とのことなのでssh認証の設定を行った
手順としては以下の通り
3-1. sshキーを作成
3-2. sshキーをクリップボードにコピー
3-3. sshキーをgithubに登録
3-4. ssh接続を確認

3-1. sshキーを作成

wslのコマンドラインで以下のコマンドを入力する

$ ssh-keygen -t rsa

3回質問があって入力待ちになるが、デフォルトで良かったので何も入力せずにエンターキーを押した

3-2. sshキーをクリップボードにコピー

以下のコマンドでコピーする

$ cat ~/.ssh/id_rsa.pub | clip.exe


3-3. sshキーをgithubに登録

webブラウザからgithubにログインし、
[右上のアイコン] ->[settings] -> [SSH and GPG keys]の順でクリック
[SSH keys]の[new SSH key]からwslで作成したssh keyを登録する
[new SSH key]をクリックするとtitleとkeyの入力欄が現れる

titleはわかりやすい任意の名前を入力する
私は"wsl_ubuntu"とした
keyにはクリップボードにコピーしたssh keyを貼り付けた
最後に[add SSH key]のボタンを押して登録終了

3-4. ssh接続を確認

wslのコマンドラインから接続テストをする

$ ssh -T git@github.com

初回のみ警告が出て接続してよいか確認される
"yes"とタイプしてエンターでよい
最後に以下のメッセージが出たら接続できている

Hi hogefuga! You've successfully authenticated, but GitHub does not provide shell access.


4. githubにpush

実際にファイルをgithubにpushする
手順は
4-1. githubリポジトリを作る
4-2. pushするファイルのあるディレクトリをinitする
4-3. pushするファイルをaddする
4-4. コミットメッセージの作成
4-5. ファイルをpushする

4-1. githubリポジトリを作る

githubにログインし、右上のアイコンから[your repositories]をクリックすると作成したリポジトリの一覧が現れる
まだ何もなければリポジトリは表示されない
[new]のボタンを押すと新しくリポジトリを作成できる
リポジトリに名前をつけて"public"か"private"かを選んで新しく作成する
他の項目は今のところデフォルトのままにしてある
今回は"test"という名前で"private"のリポジトリを作成した

4-2. pushするファイルのあるディレクトリをinitする

目的のファイルのあるディレクトリに移動し、Gitのリポジトリを作成する
例えばpushしたいファイルのあるディレクトリが"/hoge/fuga/"なら

$ cd /hoge/fuga/
$ git init 

とすると"/hoge/fuga/"に.gitのディレクトリが作成される

4-3. pushするファイルをaddする

次にpushするファイルをaddするのだが個別にファイルをpushする場合は

$ git add [ファイル名]

とし、ディレクトリに含まれるファイルをすべてpushする場合は

$ git add .

とする

4-4. コミットメッセージの作成

コミットメッセージとはコミット時に入力を求められる文章のことで、ファイルに対してどのような操作をしたかを簡潔に説明した文章である

$ git commit

を実行すると、2. git configで設定したようにvscodeでCOMMIT_EDITMSGが起動する
ファイルを編集して閉じるまでwslはwait状態になる
コミットメッセージには書き方があるそうで以下のサイトを参考にした
qiita.com

ファイルを閉じると次のメッセージが表示された

Aborting commit due to empty commit message.

git configでwaitオプションを付けると解決するそうだが、私の環境ではうまくいかない
k-side.hatenablog.jp
commit文は作成されているのでこれからあとの操作に問題はない

4-5. ファイルをpushする

実際にファイルを作成したリポジトリにpushする
リポジトリのアドレスは作成したリポジトリの[<> code] のタブで[<> code]のボタンを押すと[ssh]のタブが見つかる
[ssh]のタブに"git@github.com"で始まるアドレスがあるのでこれを使う
今回はユーザー名hogefugaで作成したリポジトリ名がtestなので"git@github.com:hogefuga/test.git"となる
実際にpushするまでのコマンドは以下の通り

$ git remote set-url origin git@github.com:hogefuga/test.git
$ git branch -M main
$ git push -u origin main

pushが終わったらウェブブラウザでファイルを確認する

5. sshプロトコル通信に変更

実際に使ってみてわかったことなのだがgit pushコマンドを使うとなぜか毎回ユーザー名とパスワードを聞かれてた
入力してもログインできずに困っていたら同じ問題を解決している人がいた
qiita.com

こちらのサイトを参考にhttps通信からsshプロトコルに変更した
まず現状の確認

$ git remote -v
origin  https://github.com/hogefuga/test.git (fetch)
origin  https://github.com/hogefuga/test.git (push)

test.gitはgit hubにあるリポジトリ
httpsを使っていたのでsshに変更する

$ git remote set-url origin git@github.com:hogefuga/test.git
$ git remote -v
origin  git@github.com:hogefuga/test.git (fetch)
origin  git@github.com:hogefuga/test.git (push)

上でも書いたが、リポジトリのアドレスは目的のリポジトリの[<> code] のタブで[<> code]のボタンを押すと[ssh]のタブが見つかる
[ssh]のタブに"git@github.com"で始まるアドレスがあるのでこれを使う


[おまけ] ファイルのダウンロード

githubにあるファイルのクローンをダウンロードするにはファイルを保存したいディレクトリに移動したあとに

$ git clone https://github.com/hogefuga/test.git

または

$ git clone git@github.com:hogefuga/test.git

とする