Oasistブログ

自然言語、プログラミング、ライフハックを主に特集

Gitインストール on WSL

f:id:oasist:20200613213929p:plain
WSL on Windows

目次

1. 環境

  • Windows 10 Home
  • WSL
    • Ubuntu (Ver. 1804.2019.521.0)
  • GitHub / GitLab アカウントは登録済である
  • Atom (1.40.1)

2. パッケージ管理

  • パッケージアップデート
$ sudo apt update
  • パッケージアップグレード
$ sudo apt upgrade

3. Gitインストール

※ 通常まっさらな状態から sudo apt update sudo apt upgrade 実行後にはすでにGitは入った状態だが、削除したり何らかの理由で入っていない場合に実行。

3-1. デフォルトパッケージ

※ この方法でインストールするGitは最新より古いバージョンがインストールされる。

  • Gitをインストールする。
$ sudo apt install git
  • インストールしたGitのバージョンを確認する。
$ git --version

3-2. ソースからインストール

※ この方法でインストールする場合は時間が少々かかり、Aptでパッケージ管理されないが、最新バージョンをインストールできる。

  • Gitをインストールする。
$ sudo apt install make libssl-dev libghc-zlib-dev libcurl4-gnutls-dev libexpat1-dev gettext unzip
  • インストールしたGitのバージョンを確認する。
$ git --version

4. Git設定

  • ユーザー名とメールアドレスを設定する。
$ git config --global user.name "[username]"
$ git config --global user.email "[email]"

※ プロジェクトごとに別のユーザー名とメールアドレスを利用する場合は global を省略する。

  • 設定を確認する。
$ git config --list
user.name=[username]
user.email=[email]

5. SSH設定

  • SSH鍵を生成する
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/[username_ubuntu]/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/[username_ubuntu]/.ssh/id_rsa.
Your public key has been saved in /home/[username_ubuntu]/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:hxbYsu6UHql6qA4tIIA7BnbVktsubFbEV6ewBQw+hmM [username_ubuntu]@DESKTOP-QDJ9F6V
The key's randomart image is:
+---[RSA 2048]----+
|     hogehoge    |
|      foobar     |
|     hogehoge    |
|      foobar     |
|     hogehoge    |
|      foobar     |
|     hogehoge    |
|      foobar     |
|     hogehoge    |
+----[SHA256]-----+
  • config ファイルを生成し、ホスト名、ドメイン、ユーザー名、秘密鍵のパスを記述する。
vim ~/.ssh/config
Host github
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa

もしくは

Host gitlab
  HostName gitlab.com
  User git
  IdentityFile ~/.ssh/id_rsa

ここからが厄介で、自分が踏んだ地雷は以下の3つだった。

  1. コマンドラインでGit操作をするときに参照する鍵はLinux側の ~/.ssh/id_rsaIDEで参照する鍵は /mnt/c/Users/[username_windows]/.ssh/id_rsa を参照するので、それぞれを上手く管理しなければならない。
  2. Linux側の ~/.ssh/ のシンボリックファイルをWindows側に作ると、パーミッションで読み取りが許可されていないので秘密鍵を読み込めない。IDEでGit操作ができない。
  3. Windows側の /mnt/c/Users/[username_windows]/.ssh/id_rsa のシンボリックファイルをLinux側に作ると、パーミッションが緩すぎて怒られる。

結局、シンボリックファイルではなく同一の鍵をWindows側にコピーして対処した。
どなたか良い方法あれば教えて頂きたい。

6. GitHub / GitLab 設定

公開鍵ファイルの文字列をGitHubもしくは GitLabに登録する。

$ cat ~/.ssh/id_rsa.pub
ssh-rsa HOGEHOGEFOOBARhogehogefoobarHOGEHOGEFOOBARhogehogefoobarHOGEHOGEFOOBARhogehogefoobarHOGEHOGEFOOBARhogehogefoobarHOGEHOGEFOOBARhogehogefoobarHOGEHOGEFOOBARhogehogefoobarHOGEHOGEFOOBARhogehogefoobarHOGEHOGEFOOBARhogehogefoobarHOGEHOGEFOOBARhogehogefoobar [username_ubuntu]@DESKTOP-XXXXXXX

6-1. GitHub

  • Setting をクリックする。

f:id:oasist:20200613214019p:plain
Setting をクリック

  • SSH and GPG keys をクリックする。

f:id:oasist:20200613214115p:plain
SSH and GPG keys をクリック

  • New SSH key をクリックする。

f:id:oasist:20200613214138p:plain
New SSH key をクリック

  • 任意の名前をつけ、先ほどの公開鍵ファイルの文字列を貼り付け、鍵を登録する。

f:id:oasist:20200613214138p:plainf:id:oasist:20200613214212p:plain
鍵を登録

6-2. GitLab

  • Setting をクリックする。

f:id:oasist:20200613214341p:plain
Setting をクリック

  • SSH keys をクリックする。

f:id:oasist:20200613214406p:plain
SSH keys をクリック

  • 先ほどの公開鍵ファイルの文字列を貼り付け、鍵を登録する。

f:id:oasist:20200613214543p:plainf:id:oasist:20200613214432p:plain
鍵を登録

6-3. 接続確認

  • ssh [/home/[username_ubuntu]/.ssh/config に登録したホスト名] を実行して接続を確認する。以下のようなメッセージが返って来ればOK。
$ ssh github
PTY allocation request failed on channel 0
Hi oasis-forever! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.

7. Atom

AtomなどのIDEではUIでGit操作が可能である。


  • Stage: $ git add [filename]
  • Discard Changes: $ git stash (individual)
  • Stage All: $ git add -A

f:id:oasist:20200613214707p:plain
Atom上Git操作①


  • Discard All Changes: $ git stash (all)
  • Undo Last Discard: $ git stash pop

f:id:oasist:20200613214752p:plain
Atom上Git操作②


  • Click File: $ git diff
  • Stage Selection: $ git add [filename] (partly)
  • Discard Selection: $ git stash (partly)

f:id:oasist:20200613214852p:plain
Atom上Git操作③


  • Input a message and click Commit to [branch name]: git commit -m "[message]"

f:id:oasist:20200613215019p:plain
Atom上Git操作④


  • Push: git push origin [branch name]

f:id:oasist:20200613215048p:plain
Atom上Git操作⑤


  • Fetch: git fetch origin [branch name]
  • Pull: git pull origin [branch name]
  • Push: git push origin [branch name]
  • Push Force: git push origin [branch name] -f

f:id:oasist:20200613215113p:plain
Atom上Git操作⑥

8. 参考サイト