初めてGitを使用する際に、自分なりにメモとして残します。
私が使用しているのはMacですので、Mac用の設定方法についてご説明します。ご了承ください。
まず、前提としてGitとGitHubは異なるものです。
私はこれを理解するのに、時間がかかりました。
簡潔に説明すると、Gitはプロジェクトのコードを記録するためのソフトウェアです。
一方、GitHubは記録したコードを他人と共有したり、自分自身が分かりやすく管理できるようにしたものと認識しています(もし間違っていたら、すみません)。
以下は超基本的な設定手順の順番になります。
①GitとGithubをインストール
GitはMacでは標準でインストールされているため、別途インストーラーを用いた環境構築などの作業は不要です。
インストールされているかどうかは、ターミナル上で以下のように確認できます。
ユーザー名@PC名 ~ % git -v
~ はホームディレクトリの為、そこで実装する方が後々良いです。
-vはgit --version
の略であり、どちらでも同じ挙動が確認出来ます。
実行結果は以下のようになります。
~ % git -v
git version 2.39.2 (Apple Git-143)
このように表示されていれば、Gitは標準で使用出来ます。
GitHubはこちらからサインアップを行って頂くことで、アカウント登録が可能となっています。
②Gitの初期設定
Gitに自身のユーザーを登録します。
登録方法は以下の通りです。
~ % git config --global user.name "hoge"
ダブルクォーテーション内にはGitHubで登録したユーザー名が入ります。
ユーザー名を登録出来たら、次に、メールアドレスを登録します。
~ % git config --global user.email "hoge@gmail.com"
こちらも、GitHubで登録したメールアドレスが入ります。
これで登録完了になります。
登録した内容を確認したい場合は、以下のように実行して下さい。
~ % git config --list
実行して以下のように表示がでたら成功しています。
user.name=hoge
user.email=hoge@gmail.com
③リポジトリの作成
GitHubを開き、Newボタンからリポジトリを作成します。
押下すると以下のような画面が表示されます。
各機能について、簡単に説明します。
項目 | 説明 |
---|---|
Owner | だれが管理するのか |
Repository name | どんなタイトルにするのか |
Description | なんの為のリポジトリなのか |
Public | 世界中に公開する |
Private | 自身若しくは、任意で追加したメンバーしか閲覧不可 |
④SSHkeyの生成
SSHに関しては、設定しなくても、設定してもどちらでも良い項目にはなりますが、公開鍵暗号方式という接続方法使用していて、大きなメリットが2つあります。
まず、1つ目のメリットとして、通信が暗号化されるため、セキュリティ上のリスクが低減します。
2つ目のメリットとして、GitからGitHubにコードを保存する際に、ユーザー名とパスワードを毎回入力する手間が省け、開発の効率が向上します。
以下に、設定方法を記述します。
~ % ls -al ~/.ssh
このコマンドで拡張子.ssh
で終わるファイルがないか確認します。
初めて作成する場合は、なにも表示されず、作成した事がある場合は、以下のように表示されます。
-rw------- 1 ユーザー名 staff 3389 6 22 15:03 id_rsa
-rw------- 1 ユーザー名 staff 747 6 22 15:03 id_rsa.pub
このように表示されていても、作成した記憶がない場合、同じ名前で保存したら、上書きは出来ます。
上書きしたくない場合は、ここに表示されない別の名前で保存するようにしましょう。
実際に以下にSSHkeyを作成していきます。
cd .ssh
.ssh % ssh-keygen -t rsa -b 4096
.sshディレクトリに移動してから実行すると、以下のように保存する名前と場所を聞かれます。
移動はしなくてもいいかもしれないが、ホームディレクトリ上に作成されるのを防ぐ為、移動してからにしている。
Enter a file in which to save the key (/Users/YOU/.ssh/id_ALGORITHM):
名前を設定しなければ、id_rsaで設定されます。以前にも同じ名前で作成した事がある場合、以下のように聞かれます。
id_rsa already exists.
Overwrite (y/n)?
上書きする場合はyをせずに、別の名前で保存したい場合は、nを入力します。
yを入力したり、初めてファイルを作成する時は、以下のように、パスワードを入力できます。
Enter passphrase (empty for no passphrase):
ここでは、設定しないという方法もとれますし、設定するという方法もとれます。
自身の開発環境によってどちらにするべきか決めます。
決めてパスワードを入力すると以下のように表示されます。
Enter same passphrase again:
このように表示されると、もう一度同じパスワードを入力し、確定させます。
確定させると、下記のように表示されます。
Your identification has been saved in 作成した秘密鍵
Your public key has been saved in id_test_rsa.pub
The key fingerprint is:
SHA256:oZDcMJvwzAiemfP+qi5DF1v29m3/TVWLCO7XBDNOmMs raku@Rakuto-NOV.local
The key's randomart image is:
+---[RSA 4096]----+
|. . o |
|..+B B o |
| *. X . .+ = .|
| o. + .o.= = . o|
| .= o SE o o ..|
| ..o o. o .|
|. .. . .... . .|
|o . ..o ..|
|o+.... . .....|
+----[SHA256]-----+
そうして、先程の.ssh
の拡張子を確認する以下を実行する。
~ % ls -al ~/.ssh
作成したファイルが作成されていれば成功となる。
⑤生成したSSHキーをSSHエージェントに登録する
SSHエージェントに関しても、設定しなくても、設定してもどちらでも良い項目にはなりますが、公開鍵認証の代行することができ、大きなメリットが2つあります。
まず、1つ目のメリットとして、鍵を隠しファイルなどに保存しておく必要が無く、通信を行いたい時だけ、鍵が渡される為、セキュリティ上のリスクが低減します。
2つ目のメリットとして、秘密鍵は使用する度、設定したパスワードの入力を求められますがSSHエージェントに登録しておくことで、パスワードの入力を省略出来ます。
以下のコマンドを入力し、SSHエージェントを起動します。
~ % eval "$(ssh-agent -s)"
起動できたら以下のように表示されます。(pidの後の識別番号は環境により異なります)
Agent pid 59566
設定ファイルに秘密鍵を設定する為、以下のコマンドを実行する。
~ $ open ~/.ssh/config
ファイルが無ければ以下のように表示されます。
The file /Users/YOU/.ssh/config does not exist.
ファイルが無ければ、以下のコマンドを実行し、設定ファイルを自作する。
touch ~/.ssh/config
作成出来たら以下を設定ファイルに記述する
Host github.com
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa
記述が出来たら、SSHエージェントに秘密鍵を登録する。
ssh-add --apple-use-keychain ~/.ssh/id_rsa
以下のように表示されたら、登録完了。
Identity added:
⑥SSHキーをGitHubへ設定する
これまでに作成したSSHキーを使用して、GitHubへ設定します。
以下のコマンドを実行して公開鍵をクリップボードに保存します。
pbcopy < ~/.ssh/id_rsa.pub
保存したら、GitHubを開いて、以下のユーザーアイコンをクリックし設定項目へ移動します。
設定項目に移動したら、SSH and GPG keys
を選択します。
移動したら、New SSH keys
を選択します。
Titleにはid_rsa.pubや公開鍵などのタイトルを入力し、Keyには先程、クリップボードにコピーした公開鍵を貼り付けする。この時に余計な空白がないように注意しなければいけない。
⑦SSH接続をテストする
登録したSSHキーが通信出来るのか予め確認をする。
以下のコマンドを入力してください。
~ % ssh -T git@github.com
以下のように表示出来たら、接続完了。
Hi Rakuto-NOV! You've successfully authenticated, but GitHub does not provide shell access.
⑧Gitに内容をコミットする。
cdで編集したいファイルがある直前のディレクトリまで移動する。
これをカレントディレクトリという。
例えば、下記のような形
my_project/
├── src/
├── main/
│ ├── java/
│ │ └── com/
│ │ └── example/
│ │ └── MyClass.java
│ └── resources/
│ └── config.properties
└── test/
├── java/
│ └── com/
│ └── example/
└── TestClass.java
└── resources/
└── test_config.properties
MyClass.javaを編集したい場合、exampleがカレントディレクトリとなる。
その場合、以下のようにコマンドを入力する。
~ % cd my_project/main/java/com/example
移動したら、カレントディレクトリ上にローカルリポジトリを作成します。
example % git init
以下のように表示されたら作成完了。
Initialized empty Git repository in
作成したら以下のように入力し、更新したファイルを選択する。選択せず、全てのファイルを更新する場合は、git add .
~ % git add MyClass.java
選択したら、ブランチ名を設定する。以下のように入力します。
git checkout -b develop
入力したら、以下のコマンドを実行し、設定したブランチになっている事を確認します。
~ % git branch
確認したら、コミットする。ダブルクォーテーション内には更新内容を記述します。
git commit -m “first commit”
⑨GitHubにプッシュする。
コミットしたら、それをGitHub上へプッシュします。
プッシュするにはリモートリポジトリの作成が必要です。
以下のようにSSHを選択し、右のコピーを選択します。
コピーしたらターミナル上で、以下のコマンドを入力する。
git remote add origin git@github.com:Rakuto-NOV/TEST.git
originまで入力し後は貼り付け。
ここでのoriginはリモートリポジトリ名になります。
以下のように入力することでプッシュすることが出来ます。
git push origin develop
github上で反映されていれば、完了。