basyura's blog

あしたになったらほんきだす。

Git がこわい

ようやく Git を導入することができたのだけど、どう運用するべきか四苦八苦。Github に登録したのが 2008 年 12 月。そこからGit を使い続けてはいるのだけど、個人で使ってただけなのでチームで使う場合の知識不足が否めない。とはいえ「この場合どうしたら?」と聞かれるので調べては答えるを繰り返す。知識を得るためには教えるのが一番っていうのは確かだなと実感する日々。ブランチをどう切るべきか、マージはどうするべきか、リリースはどうするべきか、沢山考えた。現状がベストとは言えないけど、svn でやってた時よりはひとまずいい感じに進めそうである。あとは SSD にしたい・・・。

Git を使っているうえで言葉の定義とか動作が色々もにょっていたのだけど、この本でいろいろスッキリした。いろいろ本を呼んだり調べたりした経緯があるからかもしれないけど。

リモート追跡ブランチ (Remote-tracking branch) とは、リモートリポジトリのブランチの分身のようなものです。リモート追跡ブランチは、リモートリポジトリと同期するたびに、リモートのブランチを追いかけるように移動します。

 

origin/master という名前のリモート追跡ブランチがあるので、「リモートリポジトリ origin に、master という名前のブランチが存在する」ということが分かります。   HEAD は現在作業中のローカルブランチを指すポインタです。   HEAD がリモート追跡ブランチを指すことはありません。

 

プッシュの反対はプル (Pull) と考えるのが自然ですが、Git の場合はフェッチです

 

アップストリームブランチ (Upstream branch) は、ローカルブランチとリモートリポジトリのブランチとペアリングするための概念です。

 

転送元や転送先を省略できます。

 

ツリーオブジェクトや blob オブジェクトをそのまま再利用しています。

 

ステージという中間準備地帯のおかげで、例えば、デバッグ用や実験用のコードを作業ディレクトリに残したまま、本来のコードのみをコミットする、といったことが可能です。

 

リベースは歴史を改ざんするに等しい好意なのです。このことから、他のメンバーと共有しているブランチをリベースするのは避けるべきでしょう。

 

color.branch.upstream cyan

 

リポジトリに特化した無視リストだけどメンバーで共有したくない、ということもあるでしょう。その場合は、作業ディレクトリの .git/info/exclude に無視リストを記述するることもできます。