書籍「いちばんやさしい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

コメント