gitの構築から実用までの流れ (2)
前置き
git を使用する上で簡素なコマンドほど理解不足を後で実感して初心に戻させられます。
なのでここでイメージ作りが少しでも役立てばと。
書いてないこと
- ブランチの概念と実用について
ブランチこそ他のバージョン管理ツールと異なる点だと思っていますが、、
他の初歩コマンドも重要なので先延ばし
git addしないと管理してくれない
逆にgit addしないとgitは認識すらしてくれません
たとえば
プロジェクトの初期状態で色々変更したけど
git add
してないからcommitもpush出来ないし、他のチーム内メンバも見ることが出来ない
たとえば2
git管理化に一度git addしたファイルなのに
変更後にgit addしてないと
その変更内容がチーム内で共有出来ていない状態
などが考えられます。
もちろん、commitやpushして初めて他のメンバも認識出来る状態になるのですが
git addしなければ自分の(ローカル)開発環境内ですら、今までと同じただのファイル変更と同じです。
ある程度切りの良い作業の時点でgit addをするのが望ましい。
※ 裏を返せばデバッグ作業や履歴に残らなくて良いような作業中ならgit addの必要性が無い。
git rmで管理から外す
- git管理する必要がなくなった
- 誤ってgit addしてしまった
使い方
1 | git rm -r {{ 除外したいファイル }} |
or
1 | git rm -r --cached {{ 除外したいファイル }} |
ファイルを物理削除したくない場合は後者を使う。
一旦git rmしたファイルはgit addし直さないと再びgit管理下に入りません
git checkoutで変更前に戻す
HEAD
HEADとは
git管理されているものの中で最新の状態
変更されたファイル群はどんどん蓄積されていきますが
その中でもっとも新しくgit管理上で変更されたものを指します(時間軸はあまり関係ない)
使い方
1 | git checkout HEAD {{ ファイルパス }} |
内容
上記はHEAD(つまりgit上で最新の状態)に指定ファイルの内容を置き換えますよ
といった意味合いになります。
ファイルだけでなくディレクトリも指定可能。
何も指定しなければ全てのファイルに対して適用されます。
それまでの作業途中でバージョン管理に追加(add, commit)していない
途中経過は全て消えてしまうの注意です。
逆に作業途中でよく解らない不具合などにぶつかった場合
「とりあえずHEADに戻そう」
と言ったケースに有効など使用用途は様々です。
git stashで変更状態を隠す
例えば・・・
HEADの状態を確認したいが、自分の未commit作業にあとで戻したい
そんなときに
1 | git stash |
を使用します。
概要は
git管理下にあるファイルのみ、今の自分の作業スペースの内容を隠す
例えば
hogefuga.txt
というgit管理下にあるファイルを修正途中だとします。
“一旦”その作業内容を元に戻したいとき・・・
1 | git stash hogefuga.txt |
とすれば作業内容がなくなり、
1 | git stash pop hogefuga.txt |
とすると、作業途中のものが復元します。
git diffで変更内容の差分を見る
こんなとき使う
- あるコミット(git上のバージョン)間の変更内容の異なる部分だけ知りたい
- ブランチ同士の差分を知りたい
使い方1
1 | git diff HEAD hogefuga.txt |
上記は作業途中などのファイルとHEADにある同じファイルの差分を表示してくれます。
1 2 | ++ // var_dump("hoge fuga"); -- var_dump("hoge fuga"); |
のようにプラス行が
HEADから加わった変更
で、マイナス行が
HEADからなくなった内容
です。
上記だと、”var_dump(“hoge fuga”);” という行の行頭に”// “が加わったことを意味する。
ちなみに
1 | git diff HEAD^ hogefuga.txt |
これだと
「HEADのひとつ前との比較」
を意味します。キャレットを追加すれば、その分過去に遡ります。
使い方2
1 | git diff master origin/master |
上記は
ローカルリポジトリのmasterブランチ
と
リモートリポジトリのmasterブランチ
の差分を表示します。
ブランチについてはまだ触れていないため、そんなもんなんだろうという認識で。
変更したファイル一覧だけを表示したい場合は
1 | git diff --stat master origin/master |
とオプションの「–stat」を入れてください。
git logで変更履歴を見る
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | commit aa12263066eeb96b3d615117b47a071e246b526e Author: Masanao Ohba <ohba@sterfield.co.jp> Date: Mon Jun 20 17:36:07 2016 +0900 comment in commit 4259c003af535fdc84d17daef7945b623cf40f5a Author: Masanao Ohba <ohba@sterfield.co.jp> Date: Mon Jun 20 16:04:25 2016 +0900 comment out commit c7e2c48792663d5d43df35def91873e77cb7023c Author: Masanao Ohba <ohba@sterfield.co.jp> Date: Mon Jun 20 12:55:35 2016 +0900 First base commit. |
内容は「いつ」「だれが」「どのような変更をした」です。
“commit”という文字の右隣にあるランダムな文字列はgitから与えられます。
1 | git show -w aa12263066eeb96b3d615117b47a071e246b526e |
のようにすると一番上の変更内容が見られます。
“-w”は、「スペースや改行の違いは無視します」という意味のオプションです。
絞り込み検索もできる
例えば、、
1 | git log --author=Masanao |
とすると
commitした人の登録名が”Masanao”に部分一致するものだけが一覧表示されます。
枝分岐なども
ブランチについて説明していないので紹介のみ
1 | git log --graph |
Author Profile
スターフィールド編集部
SHARE