Mercurialのマージとか

BitBucketを使ってCourseraの作業を進めているのですが、マージとかよくわからなかったので色々と試してみた。

  1. test_repというのをBitBucketにつくり
  2. rep1/test_rep というのと、rep2/test_repをつくった
  3. rep1/test_rep/test1/hogehoge というテキストファイルを作ってcommit
  4. rep2/test_rep/.hgignore を作ってcommit
  5. rep2/test_rep からpush
  6. rep1/test_rep からpush --> 「repositry is unrelated」というエラーがでてpushできない
  7. rep1/tesr_rep にpull --> 「repositry is unrelated」というエラーがでてpullできない

ここではまりましたが、以下のサイトを参照して
http://mercurial.808500.n3.nabble.com/Unable-to-push-td2134088.html

  1. rep1/test_rep に、pull -f
  2. rep1/test_rep で merge、そしてpush -f


いちおう両方共リモートレポジトリとやり取りできるようになったが、なんか色々変な感じになってしまった。無駄にrep1とrep2にて何回もpush/pull/commit/merge/updateして、よくわからないうちに同期がとれた。


しかしながら、一連の作業にて一つ学んだものがあります。


rep1とrep2で別々に違うものを編集した場合は、

  1. rep1 から commit -> push
  2. rep2 にて、pull -> merge -> commit -> push
  3. rep1 にて、pull -> update

すると、rep1とrep2が同期取れる。


何かを編集したりするまえにpullしとくといいよ、ということだとわかった気がしました。ネットワークにつながらない場所で作業をcommitした場合は、どっかでpushするまえに、pullしてmergeしましょうね、ということかな?


(2013/4/11 カテゴリー hg を削除)