merge について

merge とはなにか

と、だいそれては言えないけど、ひとつの誤解がとけた。それは「merge とは『別の』ブランチをとりこむことではなく、『指定の』ブランチを取り込むこと。なので、『今の』ブランチを取り込むことはありえる」ということ。

まあチケットベースでブランチつくって管理している

具体的には以下の様なコマンド

# 現在のブランチを表示。 defalut
hg branch
# ブランチを切って派生させる
hg branch t12345
# ごにょごにょ作業
vi hoge.js
# できました
hg ci
hg push
# できたから成果物を merge
hg up default
hg merge t12345
hg ci
hg push

default から t12345 みたいなブランチを派生させて、その上で開発して、成果をまた defualt に戻す。

default を更新して merge して push しようとしたらできない……?

単純に他の人が上の作業中に push してリポジトリが更新された。なので、pushできない。そういうときは、さいど merge する

hg merge

とりこめました

ところで git

普段 git は github で dotfiles を管理するくらいしかしてないからあんまり意識してなかったけど、「そういえば git pull で現在のワーキングディレクトリを更新しちゃうのなんなん」とおもっててちょっと調べた*1mercurial に慣れてたから「hg pull したらリポジトリ更新、hg up でワーキングディレクトリ更新でしょ」と思ってたからだ。すると、どうやら「git pull は使うべきではない」みたいな話とかったりして、そこでは git fetch | git merge だった。つまり以下のようになる。

# mercurial の場合
hg pull -u
# あるいは
hg pull | hg up
# git の場合
git pull
# あるいは
git fetch | git merge origin/master

そこで「あー、git で merge ってここで使われたりして、そういう意味かぁ」と納得した

という

ヒモをひとつときほぐした

*1:ってのと、プライベートでgitを使うかもな話があるので