wslでgithubを使う
wslでgit hubを使えるようにした
やったこと
主にこちらのサイトを参考にさせてもらった
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
とする