書籍「いちばんやさしいGit&GitHubの教本」のまとめ。
点数
89点
感想
CUIを使っている点が他の書籍とは違って勉強になった。
gitの各コマンドの意味をしっかりと理解することができた。 今まで何となく使っていたものも、改めて仕組みを理解することができた。 「git commit
でコミットされるのは、git add
でステージングされたファイルのみであり、ただファイルを編集しただけではコミット対象となはらない」というのがIDEを使っていると勘違いしやすい点だと思う。
主な内容
git config
- ユーザー名の設定
git config --global user.name xxx
- メールアドレスの設定
git config --global user.email xxx@xxx.xx
- 設定確認
git config --list
- 設定削除
git config --global --unset 項目名
- エディタの設定(コミットコメント入力時に起動される)
git config --global core.editor "code --wait"
※Visual Studio Codeの–waitオプションは、呼び出したプログラムをVisual Studio Codeの終了まで待たせる
リポジトリ作成からコミットまでの手順(ファイル追加後のファイル編集)
git init
でリポジトリ作成git add xxx.xx
でステージングにファイルを登録
※git add -A
で全ての変更をステージングに登録- ファイルを編集して
git diff
で差分を確認
※git diff
はワークツリーとステージングエリアの差分
※git diff --cached
はステージングエリアとGitディレクトリの差分 git commit
でコミット
ここまでの手順ではファイルを追加した分だけがコミットされ、編集した分はまだコミットされていない。git status
するとChanges not staged for commit
となるgit add xxx.xx
でステージングに登録(編集の分)git commit
でコミット(編集の分)
※コミットコメントが1行の場合はgit commit -m "xxxx"
でエディタを起動せずにコミットすることができる
※空のディレクトリはgit add
できない、.gitignoreを作るのが一般的らしい
git statusで状態を確認することができる
Untracked files:Git管理外
Changes to be committed:ステージングされている変更あり
Changes not staged for commit:ステージングされていない変更あり
ファイルの末尾に改行を追加すると行が変更されたと見なされる
ファイルの末尾に改行がない場合、末尾に行を追加してgit diff
すると最終行を削除して新たに2行追加したと見なされる。
これは「xxxxxx」という行が削除され「xxxxxx\n」という行が追加されたと見なされるため。
ファイルの末尾には改行を入れるべき。
コミットされるのはステージングエリアのファイル
git add
した後にファイルを変更しても、その内容はステージングエリアには反映されない。git add
した後にファイルを変更した場合は、コミットの前にもう1度git add
する必要がある。
変更の取り消し
- ワークツリーへの変更の取り消し
git checkout -- xxx.xx
ファイルを編集し(git add
せずに)git checkout -- xxx.xx
で元に戻る。
※直前のコミットまたは直前のステージングエリアへの登録に戻る
※ファイルの作成や名前変更は取り消せない。git checkout
してもファイルが残ってしまうので手動で削除する必要ある。 - ステージングエリアへの変更の取り消し
git reset HEAD xxx.xx
ファイルを編集しgit add
してからgit reset HEAD xxx.xx
でgit add
が取り消される。ファイルの状態(ワークツリー)はそのままで、ステージングエリアへの登録だけが取り消される。HEADは最新のコミットを指す。ステージングを最後のコミットと同じ状態にリセットするという意味。
git checkout
はブランチを切り替えるコマンドだが、--
を指定すると対象が「直前のコミット」になる。
個人的にわかりづらいと思う点
- ファイルを編集
git add xxx.xx
- ファイルを編集(ワークツリーとステージングに差分あり)
git checkout -- xxx.xx
とするとワーキングエリアはステージングエリアと同じ状態となる。
(直前のステージングエリアへの登録に戻る)
さらにその後git reset HEAD xxx.xx
とするとステージングはファイル編集前の状態、ワーキングツリーは最初の編集後の状態に戻る。
ファイルの削除
git rm xxx.xx
でワークツリーからファイルやディレクトリを削除し、削除した状態がステージングエリアに登録される。
※エクスプローラやFinderでファイルを削除した場合、手動でgit add
する必要がある
ディレクトリの削除はgit rm -r xxx
のように-rオプションが必要になる。
コミット履歴の確認
git log
:コミット履歴の表示。git log -p
:差分付きで表示。
GitHubへ公開鍵を登録
- SSH KEYの生成
ssh-keygen -t rsa -b 4096 -C "メールアドレス"
- GitHubへアクセス⇒Setting⇒SSH and GPG keys⇒New SSH key
Keyにid_rsa.pubの中身を貼り付ける。 ssh -T git@github.com
で接続確認
HTTPSでパスワード認証してもいいが、SSHの方がパスワードを毎回入力しないのは手間が省ける。
(ただし、パスフレーズ入力の省略設定が必要)
また、HTTPSよりもデータの転送効率が良い。
リモートリポジトリのクローン
GitHubへアクセス⇒Clone or Download⇒Use SSH⇒URLをコピーgit clone コピーしたURL
リモートリポジトリの設定確認
git remote -v