3

私はBitbucketで他の誰かのリポジトリをフォークし、いくつかの変更を加えました(そしてそれらをフォークしたリポジトリにプッシュしました)。その間に、元の作者は大幅な変更を加えました(ほとんど書き直しました)。

以前に行った変更が何にも影響を与えることなく、彼が新しい変更を簡単にプルできるように、リポジトリを彼とまったく同じになるように更新したいと思います(ただし、変更はそのタグに残っています)。

私は彼の変更を私のローカルバージョンにプルしました、それは私に2つの頭を残しました。私は彼の頭をチップ/デフォルトとして取り上げたいと思います。私はこれを(いくつかのSOの回答に基づいて)解決しようとしました:

hg update -r [myrev]
hg commit --close-branch
hg update -r [hisrev]

これは私が望む状態に私を置いたようでした。私の作業ディレクトリは彼のように見えます。しかし、試してみると、hg pushこれにより複数のリモートヘッドが作成されると言われ、これが私が望むものかどうかはわかりません(メッセージによって怖いように聞こえます!)

それで、私はこれを正しく行いましたか?プッシュを強制する必要がありますか?これは私が望むことをしますか(例えば、私がそれらに到達できるように私の変更のコピーを保持しますが、一般的に干渉しない方法で?)。もしそうなら、これはこれを達成するための最良の方法でしたか?

4

1 に答える 1

5

閉じたブランチのヘッドはまだヘッドであるため、これらの変更をプッシュする場合は、が必要になります--force

もう1つのオプションは、そのヘッドをデフォルトのブランチにしたいものにマージすることですが、その変更は選択しません。これは、以下を使用して非対話的に実行できます。

hg update [hisrev]
hg --config ui.merge=internal:local merge [myrev]
hg commit

あなたは1つの頭に落ち着き、それは彼のコンテンツだけを持ちますが、あなたのコンテンツはまだ歴史の中で利用可能です。

于 2011-05-21T19:17:52.007 に答える