もう怖くないGit!チーム開発で必要なGitを完全マスター セクション3復習

セクション3:Gitの仕組みと基本的なコマンド

Gitの基本的な仕組みを知ろう

  • Gitはバージョンをスナップショットで記録する

    • 差分で記録していると、ブランチやマージに時間が掛かってしまう

    • ファイルを丸ごと保存することで、複数人での開発スピードがアップする

  • スナップショットで記録することで元の状態に戻せる

    • コミットでバージョンを記録する
    • コミットを辿ることで最新から過去の状態に戻せる

Gitの操作の流れを掴もう

  • Git全体の操作の流れ

  • ローカルの作業の流れ

    1. ワークツリーからステージに移動
    2. ステージからリポジトリに記録  

    ※ステージはコミットする変更を準備するエリア

Gitってどのようにデータを管理しているの?

  • Gitのデータ構造(コミットまでの流れ)

    1. ステージに追加 (git add)
      1. リポジトリに変更ファイルを圧縮したファイルを保存
      2. ステージのインデックスに変更ファイル情報をマッピングする
    2. リポジトリに記録を反映(git commit)
      1. リポジトリのツリーファイルにインデックスに記載された変更ファイル情報を記録
      2. リポジトリのコミットファイルに変更情報を記録する
  • 新しいファイルを追加・ファイルを変更した場合

    • コミットファイルに直前のコミット情報を記録することでコミットを辿れる
  • Gitのデータ構造のまとめ

    • Gitはデータを圧縮して、スナップショットで保存している
    • Gitのコマンドはそのデータに対して色々な操作をしている

Gitを始めよう

GitHub上にあるプロジェクトから始めよう

変更をステージに追加しよう

  • git add
    • ファイル名・ディレクトリ名を追加
    • git add .で全ての変更をステージに追加
  • ステージはコミットする変更を準備するために必要で、記録したい変更だけをコミットするための機能

変更を記録しよう

  • git commit
    • git commit -m "コメント"...gitのエディターを起動させずにコメントを記載してコミット
    • git commit -v...ファイルの変更状況を確認してコミット
  • コミットメッセージ
    • 簡単に書くとき
      • 変更内容の要点と理由を1行で簡潔に書く
    • 正式に書くとき
      • 1行目:変更内容の要約
      • 2行目:空行
      • 3行目:変更した理由

現在の変更状況を確認しよう

  • コミットやステージに追加する前にどのファイルが変更されたかを確認する癖をつける

    • まだコミットすべきでないファイルや変更途中のファイルもコミットしてしまうことを防ぐため
    • 必要な変更だけコミットするため
  • git status

    • ワークツリーとステージ、ステージとリポジトリを比較して変更があったファイルを表示する

何を変更したのか確認しよう

  • git diff
    • ワークツリーとステージとの変更差分を表示する(git addの前)
    • git diff --staged...ステージとリポジトリの差分を表示する
  • ステージに追加やコミットする前は何の変更を追加するのか確認する癖をつける

変更履歴を確認する

  • git log
    • git log --oneline...1行で表示
    • git log -p ファイル名...ファイルの変更差分を表示
    • git log -n コミット数...表示するコミット数を制限して表示

ファイルの削除を記録しよう

ファイルの移動を記録しよう

  • git mv 旧ファイル 新ファイル
    • ファイル名を変更して、ステージに記録する
    • 古いファイルを削除して、新しいファイルを追加する

GitHubにpushしよう

  • push...ローカルリポジトリの変更をリモートリポジトリに反映すること
  • git remote add origin GitHubのurl

    • 以後originという名前でGitHubにアップしたり取得できる
  • git push リモート名 ブランチ名

    • git push -u...リポジトリ、ブランチの引数を省略できる、正確にはローカルブランチが更新を追いかけるリモートブランチ(上流ブランチ)を登録する

コマンドにエイリアスを付けよう

  • エイリアス...別名
    • コマンドの入力を短縮して入力を楽にする
  • git config --global alias.省略名 コマンド名
    • git config --global...PC全体の設定を変更する(--globalがない場合はプロジェクトのみ適用)
      • ~/.gitcongや~/.config/git/configを変更する

バージョン管理しないファイルは無視しよう

  • バージョン管理したくないファイル

    • 機密情報が書かれたファイル...流出により不正アクセスされる
    • 自動生成されるファイル...チーム開発には不要
  • .gitignoreファイル

    • gitの追跡対象から外すファイル・ディレクトリを記載する
    • ファイルの書き方
      • コメント
        • # コメント
      • ルートディレクトリを指定
        • /root.html
      • ディレクトリ以下を除外
        • dir/
      • 特手の文字列にマッチ
        • /*/*.css