読者です 読者をやめる 読者になる 読者になる

ぺーぺーSEのブログ

備忘録・メモ用サイト。

Gitコマンド整理

Git

Gitコマンドを整理する。

ローカル環境設定

ローカル操作

Gitの以下の保存領域がある。

  • ワーキングディレクトリ / ワークツリー
    • 作業スペース。編集中のファイルがある。
  • ステージングエリア / インデックス
    • コミットする内容をた保存するスペース。
  • ローカルリポジトリ
    • コミットするとステージングエリアの内容が保存される。
  • リモートリポジトリ
    • ローカル以外のすべてのリモートリポジトリ。

ワーキングディレクトリからローカルリポジトリまでには以下の操作がある。

  • git add
    • ステージング(ワーキングディレクトリ → ステージングエリア)
    • ワーキングディレクトリの変更をステージングエリアに反映する
  • git commit
    • コミット(ステージングエリア → ローカルリポジトリ
    • ステージングエリアの内容をローカルリポジトリに反映する
  • git status
    • ワーキングディレクトリとステージングエリアの変更状況を表示する
      • はワーキングディレクトリ、はステージングエリアの変更
  • git log
  • git diff
    • ワーキングディレクトリステージングエリアを比較する
  • git checkout
    • 状態を戻す
  • git commit --amend
    • 直前のコミットを削除してステージングエリアが1つ前の状態に戻る
  • git revert
    • 過去のコミットを削除する(ワーキングディレクトリの内容も戻る)
    • git revert HEAD^
      • HEADの一個前を消す
    • git revert HEAD^^
      • HEADの二個前を消す
    • HEAD」は現在のブランチの先頭、最新コミットへのポインタを指す
  • git reset
    • 変更(コミット)の取り消し、指定したリビジョンまで戻る
    • 後述するが、マージの取り消しにも使用できる
    • `git reset --hard HEAD^
      • 現在のブランチHEADの1つ前の状態に戻る(HEADが1つ戻り、前のHEADはなくなる)
    • resetには「soft」「mixed」「hard」の3つのモードがありそれぞれ下表のようになる
モード HEADの位置 ステージングエリア ワーキングディレクトリ
soft 変更する 変更しない 変更しない
mixed 変更する 変更する 変更しない
hard 変更する 変更する 変更する

リモート操作

  • git push
  • git pull
    • リモートリポジトリから変更を取得する(マージまで行う)
    • git fetch + git merge origin/master」に同じ
  • git fetch

masterorigin/masterの違い

masterはローカルリポジトリのmasterブランチを指し、origin/masterはリモートリポジトリのmasterブランチを指す。
ただし、origin/masterはリモートリポジトリと結びついているブランチであって、ローカルに存在する。
git fetchすることによって、ローカルのorigin/masterが更新される。
つまり、git fetchした後にgit merge origin/masterすると、「ローカルのmasterブランチに最新状態に更新したorigin/masterの変更をマージする」ということになる。

ブランチ操作

  • git branch
    • ブランチの一覧を表示する
    • git branch <branchname>
      • ブランチを作成する(現在のブランチのリビジョンで作成される)
    • git branch -d <branchname>
      • ブランチを削除する
  • git checkout
    • ブランチの切り替え(元のブランチ名はmaster)/リビジョンへの切り替えもできる
    • git branch <branchname>/<revision>
  • git merge
    • マージ(masterからnewBranchを取り込む)
    • git merge <branch>
      • 今のブランチに指定したブランチをマージする
      • コンフリクトが発生するとコンフリクトが発生したファイルを修正してaddとcommit(メッセージは自動生成)を実行する必要がある
  • git reset

    • 変更(マージ)の取り消し、指定したリビジョンまで戻る
    • `git reset --hard HEAD^
      • 現在のブランチHEADの1つ前の状態まで戻る(HEADが1つ戻り、前のHEADはなくなる)
    • 前述したがコミットの取り消しにも使用できる
  • git rebase <branchname>

    • 指定したブランチのHEADに現在のブランチの変更を追加する
    • git rebase master
      • 現在のブランチをmaster(HEAD)から作成したことにする
    • 競合が発生した場合は修正の後git rebase --continueを実行する