1. ホーム
  2. mercurial

[解決済み] hgのマージを中止するには?

2022-06-28 21:56:19

質問

Mercurialで共同作業をするのは初めてです。私の状況です。

  • 別のプログラマーがファイルの rev 1 を変更し、4 スペース インデントを 2 スペース インデントに置き換えました。(つまり、すべての行を変更しました。) これを rev 2 と呼び、リモート リポジトリにプッシュしました。
  • 私は、ローカル ワークスペースのさまざまなコードの変更を伴う実質的な変更 rev 1 をコミットしました。これを rev 3 と呼びます。
  • 私は hg pull を編集し hg merge dがはっきりしないまま。
  • 競合が無数にあり、あまり本質的でない。

ですから、マージする前にローカル リポジトリを 2 スペース インデントに変更しておけばよかったと本当に思います; そうすればマージは些細なことになります (と私は思っています)。しかし、私はバックアップを取ることができないようです。私は、以下のものが必要だと思います。 hg update -r 3 が必要だと思うのですが、それによると abort: outstanding uncommitted merges .

マージを取り消し、ローカルリポジトリのスペーシングを変更し、再マージするにはどうすればよいですか。

どのように解決するのですか?

C (または --clean) フラグを使用すると、コミットされていない変更を破棄できます。

hg update -C -r 3

注意: コミットされていないものはすべて消えてしまいます!

その後、おそらく何らかのコードフォーマッターツールを使って全体の操作を行うか、少なくとも正規表現を使った検索と置換を行う必要があります。マッチするものを置き換えるような単純なもの ^____ (アンダースコアの代わりに4つのスペースを使用) にマッチするものを __ (スペース2つ)を数回繰り返せば、うまくいくはずです。