微妙な違い
色々スルーしてる部分が多いなと。
例えば先日も_こんなやり方があるんだ_と列挙させて頂いてた git diff HEAD と git diff --cached の違いですが、
- git diff HEAD は最新コミットとワークツリーの差分を出力
- git diff --cached はインデックスの状態と指定されたコミットとの差分 (無指定の場合は HEAD) を出力
とのこと。むむむむ。
ちなみにただの git diff はインデクスとワークツリーの差分、になるのかな。
branch
あるいは git checkout -b というコマンドですが、濱野さん本によれば以下とのこと。
$ git checkout -b 新しいブランチ名 ブランチの視点コミット
通常以下なことしてますが
$ git checkout -b feature-A
これは以下の省略形なんですね。
$ git checkout -b feature-A origin/master
push
これも略する書き方があってアレ。
$ git push
だと以下な省略形とかってやつです。
$ git push origin master
origin ってのは .git/config の中に "origin" という名前の付いた remote repository が定義されてるのでソコね、という指定で3つめの引数はローカルの master を push します、って意味になるのか。あるいは
$ git pull
という操作は以下と同じ、と認識してるのですが
$ git fetch $ git merge origin/master
だとすると省略形は以下になるのかどうか。
$ git pull origin/master master
む、濱野さん本の 13.10.1 に記述がありますね。曰く
$ git push プッシュ先リポジトリ プッシュするリファレンス指定
とあります。リファレンスの一般的な形式は以下とのこと。
プッシュするオブジェクトのオブジェクト名と、プッシュする先のリファレンス名とを、コロン (:) で区切って並べたものです。
ただし、コロンの前後に書く文字列が同じになる場合は、コロンを含めて省略してしまっても構いません。
入門 Git より引用
ということは本当は上のナニではなくて
$ git push origin master:master
が、という事みたいです。むむむむ。
あ、そういえばリモートブランチ削除って以下だったような。
$ git push origin :feature-A
ということは上記は濱野さん本曰く「空っぽの歴史でそのブランチを更新する」という事になるのですね。なるほど。