mzgkworks

iOSを中心にプログラミング関係について書く

【Git】Git入門レッスン_Chapter05_1-6

コマンドの場当たり的な使い方ではなく、Gitの使い方をちゃんと理解したいので始めてみる。教本はこの本を使用。

アリスとボブのGit入門レッスン

一気にファイルをインデックスにステージする

$ git add .

今いるディレクトリ以下のすべての階層のファイルをインデックスにステージする。
全ファイルがステージされるので注意。

いきなりコミットする

$ git commit -a -m "add込みでcommitする"

git commit 時に-aオプションをつける。
現在インデックスにファイル情報が登録されているワーキングツリーのファイルを、自動的に git add してからコミットを行う。
ただし、インデックスに登録されているファイルのみがコミットされる。

コミットを中止する

コミットメッセージを何も入力しない場合は、コミットが中止される。

インデックスの変更をなしにする

$ git reset HEAD ファイル名

インデックスにステージングしたファイルをHEADの状態に戻す。

インデックスから変更を取り除く(アンステージする)。

本の例では、hello.txtは一度もコミットしたことがないので、
インデックスの状態をHEADに戻す

インデックスにはhello.txtが存在しない状態となる。

インデックスとワーキングツリーの差分を表示する

$ git diff

ファイルを指定のコミット状態に戻す

# 指定のコミット状態に戻す
$ git reset --hard コミットID

# 最新のコミット状態に戻す
$ git reset --hard HEAD

ワーキングツリー・インデックスともに指定のコミットの状態(HEADだと最新コミット)に戻る。
すべて指定コミットの状態で上書きされるので注意が必要。
--hardオプションではファイル名の指定はできない。

git resetでのファイル名指定の違い

ファイル名あり:ファイル名のインデックスだけをコミットIDの状態に変更する
ファイル名なし:HEADの位置を指定されたコミットIDにして、Git管理下の全ファイルをコミットIDの状態に変更する

対象ファイルのみを指定のコミット状態に戻す

# 指定したコミット状態に戻す(インデックス・ワーキングツリー)
$ git checkout コミットID ファイル名

# 最新のコミット状態に戻す場合
$ git checkout HEAD ファイル名

コミットメッセージの書き方

1行目:内容を要約したタイトル
2行目:空行
3行目:詳細な説明

最新のコミットを変更する

# --amendオプションをつける
$ git commit --amend

--amendをつけることで、最新のコミット(HEAD)の変更になる。

インデックスの内容を変更してから実行:コミットの内容が変更される
インデックスの内容が同じ:コミットメッセージの変更のみ

  • コミットするときは常にインデックスの状態でコミットされる
  • --amendなし:HEADの指すコミットに続く
  • --amendあり:HEADの指すコミットを上書き

参考書

ストーリー形式でGitの使い方を学んでいけるので、1人学習がしやすい本。

アリスとボブのGit入門レッスン

アリスとボブのGit入門レッスン

Kindle

アリスとボブのGit入門レッスン

アリスとボブのGit入門レッスン