「いちばんやさしいGit&GitHubの教本」の感想・備忘録1

スポンサーリンク

書籍「いちばんやさしい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の終了まで待たせる

リポジトリ作成からコミットまでの手順(ファイル追加後のファイル編集)

  1. git initでリポジトリ作成
  2. git add xxx.xxでステージングにファイルを登録
    git add -A で全ての変更をステージングに登録
  3. ファイルを編集してgit diffで差分を確認
    git diffはワークツリーとステージングエリアの差分
    git diff --cachedはステージングエリアとGitディレクトリの差分
  4. git commitでコミット
    ここまでの手順ではファイルを追加した分だけがコミットされ、編集した分はまだコミットされていない。
    git statusするとChanges not staged for commitとなる
  5. git add xxx.xxでステージングに登録(編集の分)
  6. 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.xxgit addが取り消される。ファイルの状態(ワークツリー)はそのままで、ステージングエリアへの登録だけが取り消される。HEADは最新のコミットを指す。ステージングを最後のコミットと同じ状態にリセットするという意味。

git checkoutはブランチを切り替えるコマンドだが、--を指定すると対象が「直前のコミット」になる。

個人的にわかりづらいと思う点

  1. ファイルを編集
  2. git add xxx.xx
  3. ファイルを編集(ワークツリーとステージングに差分あり)
  4. 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へ公開鍵を登録

  1. SSH KEYの生成
    ssh-keygen -t rsa -b 4096 -C "メールアドレス"
  2. GitHubへアクセス⇒Setting⇒SSH and GPG keys⇒New SSH key
    Keyにid_rsa.pubの中身を貼り付ける。
  3. ssh -T git@github.comで接続確認

HTTPSでパスワード認証してもいいが、SSHの方がパスワードを毎回入力しないのは手間が省ける。
(ただし、パスフレーズ入力の省略設定が必要)
また、HTTPSよりもデータの転送効率が良い。

リモートリポジトリのクローン

GitHubへアクセス⇒Clone or Download⇒Use SSH⇒URLをコピー
git clone コピーしたURL

リモートリポジトリの設定確認

git remote -v

コメント