Git / GitHubの使い方の勉強過程をまとめてみました。
OS環境:MacOS 10.15 Catalina (MacOS 12.6 Montereyでも確認)
git環境:git version 2.37.0
1. HomebrewからGitをインストールする
1.1 Homebrewを最新にする
$ brew update #homebrewのupdate
$ brew -v #version確認
brewが通らない人はexport PATH="$PATH:/opt/homebrew/bin/"
を.bash_profileに書き込んでね(bashの場合)
1.2 gitをインストールする
$ brew install git #gitのインストール
$ git --version #バージョン確認
2. Gitのパスをインストール
2.1 使用中のシェルを確認
$ echo SHELL #使用中のシェルを確認(bash oe zsh)
2.2 シェルに合わせたパスの追加
$ sudo vi ~/.zshrc #zshの場合
$ sudo vi ~/.bash_profile #bashの場合
#パスの設定
export PATH=/usr/local/bin/git:$PATH
#シェルの再起動
$ exec $SHELL -l
#gitのバージョン確認
$ git --version
viエディタについて
Escで閲覧モード、aやiで挿入モード
閲覧モード時に :wqで保存終了
3. パスワード等の設定
git config --global user.name 'xxx'
git config --global user.email 'xxx'
4. SSH接続の設定
4.1 秘密鍵を作成する
.sshフォルダがない場合は作成する
# カレントディレクトリをhomeに
$ cd
# 隠しフォルダを確認
$ ls -a
# ここで.sshディレクトリがない場合は作成
$ mkdir .ssh
ssh-keygenコマンドで公開鍵と秘密鍵を作成
オプション名 | 説明 |
---|---|
-t | 作成する鍵の暗号化形式を「rsa」(デフォルト)、「dsa」「ecdsa」「ed25519」から指定する |
-b | 作成する鍵のビット数を指定する(RSA形式の場合、デフォルトは2048bit) |
-C | コメントを指定する(デフォルトは「ユーザー名@ホスト名」。「-C ""」でコメントを削除) |
コマンド実行時に、保存フォルダおよびパスフレーズを聞かれますが、入力せずにEnterを押すとそれぞれ ~/.sshディレクトリと、パスフレーズなしに設定されます。
$ cd ./.ssh
# ed25519で作成する場合
$ ssh-keygen -t ed25519 -C メールアドレス
# rsaで作成する場合
$ ssh-keygen -t rsa -b 4096 -C メールアドレス
ed25519の場合は
id_ed25519 (秘密鍵)
id_ed25519.pub (公開鍵)
rsaの場合は
id_rsa (秘密鍵)
id_rsa.pub (公開鍵)
が作成される
4.2 公開鍵の方の内容を登録する
gitHubのSettings > SSH and GPG keys > New SSH keyにコピー&ペーストで貼り付ける。
(ssh 以下、メールアドレスまで全て貼り付ける)
4.3 接続確認
$ ssh -T git@github.com
# パスフレーズを設定している場合は入力を求められる
4.4 (補足)pushの際にパスフレーズを求められないようにする
ssh-add
でSSH鍵をssh-agent
に登録する
$ ssh-add 秘密鍵ファイルのパス
# 登録されていることを確認
$ ssh-add -l
~/.ssh/config
にSSH鍵のパスフレーズを記憶するように設定する
# common
Host *
UseKeychain yes
AddKeysToAgent yes
5. 実際のリモートへのpushまで
5.1 gitでローカルにリポジトリを作成
# gitを始める
$ git init
# フォルダ内のファイルを確認する
$ ls -a
# うまくいっていれば .git ディレクトリができている
5.2 githubでリモートにpushする
初めはREADMEや.ignoreを作成するオプションはなくてOK。
開始時に使用するコマンドが出てくるので、そのまま入れていく。
# マスターブランチの名前を確認
$ git branch
# "master"と出てきた場合は、以下でmainに変更する
$ git branch -M main
$ git branch #確認
次に、リモートの保存先リポジトリを設定する
# リポジトリに接続(originが指定したリポジトリになる)
$ git remote add origin git@github.com:***/***.git
# 確認
$ git remote -v
# pushするbranchを指定
$ git push -u origin main
ここまで設定したら、あとは実際のpush
# 変更をaddしていく
$ git add . #全てのファイルの変更をadd
# ローカルでcommitする
$ git commit -m "コメント"
# リモートにpushする
$ git push
# 現在の状態を確認
$ git branch -vv
6. リモートにアップロードしたくないファイルについて
- ローカルフォルダ内に .gitignore ファイルを作成
- 中に除外したいファイルの名前を書く
- 正規表現で拡張子指定、ディレクトリ指定で下層のファイルをまとめて指定などもできる
7. branchの管理について
ブランチ管理のコマンド一覧
コマンド | 説明 |
---|---|
git branch | ブランチの確認 |
git branch <new> | 新規ブランチ作成 |
git branch -m <old> <new> | ブランチ名変更 |
git branch -d <ブランチ名> | ブランチの削除 |
git switch <ブランチ名> | ブランチを切替 |
git switch -c <new> | 新規ブランチ作成+切替 |
branchからのpushは、初めリモートのブランチ名を指定してのpushが必要になります
# ローカルとリモートのブランチの確認
$ git branch -vv
## * main ******* [origin/main] *** のように表示される
# push先を指定してpush
$ git push origin/<ブランチ名>
8. プルリクエストについて
8.1 github側(リモート)でマージ
- branch表示画面または"Pull requests"タブの"Compare & pull request"を選択
- baseとcompareのbranchを選択し、"Create pull request"を選択
- Conflictのチェック結果が表示される
- なければ"Merge pull request"、"Confirm merge"でmergeできる(closeする)
8.2 ローカル側でマージ
mergeされたいブランチ側にいる状態で、git merge 比較するブランチ名
でmergeできる。
mergeされたいブランチ ← 比較するブランチ
コメントを求められる時はviエディタで追記すればよい
- aまたはiで入力モード
- escで操作モード
- :wqで保存し終了