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 で現在のワーキングディレクトリを更新しちゃうのなんなん」とおもっててちょっと調べた*1。mercurial に慣れてたから「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を使うかもな話があるので