rubytomato's “Getting Started”

Webアプリケーション開発の入門的な記事を投稿していきます。

Git for WindowsでGitHubのリポジトリを操作する

Git for Windows

インストール方法はGit for Windowsからインストーラーをダウンロードして実行するだけなので割愛します。

インストールが終了したらメニューからGit CMDをクリックします。

> git --version
git version 2.29.2.windows.2

初期設定

続けてユーザ名とメールアドレスを設定します。

> git config --global user.name "your_name"
> git config --global user.email "your_email@example.com"

以下の設定はオプションです。私の環境では下記の設定を行いました。

> git config --global color.ui auto
> git config --global core.preloadindex true
> git config --global core.autocrlf false
> git config --global core.fscache true
> git config --global core.quotepath false
> git config --global core.ignorecase false
> git config --global core.safecrlf true

設定は下記のコマンドで確認できます。

> git config --global --list

SSHの設定

SSHの設定を行い、Git for WindowsからGitHubのリモートリポジトリを操作できるようにします。

SSH Keyの作成

下記のようにssh-keygenコマンドでSSH Keyを作成します。

#(1) ~ #(3)で入力を求められます。

  • #(1) : 鍵ファイルの作成先とファイル名を入力します。デフォルトでよければエンターキーを押します。
  • #(2) : パスフレーズを入力します。必要がなければエンターキーを押します。
  • #(3) : パスフレーズを入力した場合、同じパスフレーズを入力します。入力していなければエンターキーを押します。
> ssh-keygen -t ed25519 -C "your_email@example.com"
Generating public/private ed25519 key pair.
Enter file in which to save the key (C:\Users\rubytomato/.ssh/id_ed25519):   #(1)
Created directory 'C:\Users\rubytomato/.ssh'.                                #(2)
Enter passphrase (empty for no passphrase):                                  #(3)
Enter same passphrase again:
Your identification has been saved in C:\Users\rubytomato/.ssh/id_ed25519.
Your public key has been saved in C:\Users\rubytomato/.ssh/id_ed25519.pub.
The key fingerprint is:
SHA256:MQwyTDgzA9NRPT2a1EjkJe8ZdAP/mWPwkOAuFhz31go your_email@example.com
The key's randomart image is:
+--[ED25519 256]--+
|oo.*=+*+*.o      |
| .B .==@+= +     |
|   = .++E.B .    |
|      o+ B * o   |
|      o S . B    |
|     . .   . .   |
|                 |
|                 |
|                 |
+----[SHA256]-----+
公開鍵

作成された公開鍵をGitHubに登録します。

GitHubにアクセスし、Settingsページを開きます。

メニューのSSH and GPG keysをクリック → New SSH keyボタンをクリックします。

f:id:rubytomato:20201228044648p:plain

Titleに任意の文字列(わかりやすいタイトル)、keyに公開鍵の内容を貼り付け、Add SSH keyボタンをクリックします。

f:id:rubytomato:20201228044721p:plain

登録後

f:id:rubytomato:20201228044748p:plain

テスト

下記コマンドで正しく設定されていることを確認します。最後の行にYou've successfully authenticatedと表示されていれば設定は正常です。

> ssh -T git@github.com
The authenticity of host 'github.com (xxx.xxx.xxx.xxx)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,xxx.xxx.xxx.xxx' (RSA) to the list of known hosts.
Hi rubytomato! You've successfully authenticated, but GitHub does not provide shell access.

リポジトリを作成する

GitHubリポジトリを作成し、Git for Windowsからリポジトリを操作できることを確認します。

リポジトリを作成

GitHubtest_repoというリポジトリを作成します。

f:id:rubytomato:20201228045809p:plain

リポジトリ作成後のページに、この後に実行するコマンドが記載されているので基本的にこの通りに実行します。

f:id:rubytomato:20201228045823p:plain

ローカル

任意のディレクトリをGit Bashで開きます。この例ではC:\Users\rubytomato\gitで開きました。

# ディレクトリ名はリポジトリ名と同じにします。
$ mkdir test_repo

$ cd test_repo

# test_repoディレクトリをリポジトリ化します。
$ git init
Initialized empty Git repository in C:/Users/rubytomato/git/test_repo/.git/

# コミットするファイルを作成します。ファイルの内容は後述します。
$ vi README.MD

# Gitで管理するようにします。
$ git add .

# リポジトリにコミットします。
$ git commit -m "first commit"
[master (root-commit) 5c2bee2] first commit
 1 file changed, 2 insertions(+)
 create mode 100644 README.MD

# masterブランチの名前をmainに変えます。
$ git branch -M main

# リモートブランチのURLをoriginに設定します。
$ git remote add origin git@github.com:rubytomato/test_repo.git

# リモートブランチへプッシュします。
$ git push -u origin main
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 233 bytes | 233.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To github.com:rubytomato/test_repo.git
 * [new branch]      main -> main
Branch 'main' set up to track remote branch 'main' from 'origin'.

README.MDの内容

# test_repo

pushが成功したらGitHubページをリロードします。README.MDに記述した内容が反映されていることを確認します。

f:id:rubytomato:20201228045832p:plain