LoginSignup
18
19

More than 5 years have passed since last update.

マージでの Tree conflict 解消方法メモ

Last updated at Posted at 2015-08-06

local delete, incoming delete upon merge

ステータス表示

表示例
!     C unity/Assets/ResourcesOutside/Effects/Mesh/FBX/UVanimation.js.meta                                                                                                 
      >   local delete, incoming delete upon merge

理由

マージ先及びマージ元両方で削除された

解消方法

このコンフリクトが発生した作業ディレクトリ内には該当ファイルは存在しないが、svn上に「削除」の情報が残っている状態となっている。

svn から情報を削除するには以下のようにrevertサブコマンドを使う

$ svn revert path/to/conflicted_file

大量にある場合は以下のワンライナーで一括で削除できる。

$ svn st | grep -E '^!.{0,6}C' | awk '{print $3}' | xargs svn revert

local edit, incoming delete upon merge

理由

マージ先で変更されたファイルがマージ元から削除されている

ステータス表示

表示例
      C tools/Gemfile
      >   local edit, incoming delete upon merge

解消方法

マージ先の状態を保持する場合、svn resolve --accept workingで作業ディレクトリの内容を採用する。

$ svn resolve --accept working path/to/conflicted_file

マージ先から該当ファイルを削除する場合、 svn delete で作業ディレクトリからファイルを削除する。

$ svn delete path/to/conflicted_file

local add, incoming add upon merge

理由

ローカルとマージ元の両方で同じファイルが追加された

ステータス表示

      C any/SomeFile
      >   local add, incoming add upon merge

解消方法

マージ先(元々の作業ディレクトリの状態)のままで良い場合、svn resolve --accept working で解消。

$ svn resolve --accept working

マージ元を反映したい場合、一旦、svn delete で作業ディレクトリのファイルを削除した後、再度マージを実行する。
マージ対象のリビジョンは svn log でマージで該当ファイルを追加/変更したリビジョンを指定する。

$ svn log ^/branches/hoge   # 表示される情報からマージ元のリビジョンを確認
$ svn delete path/to/conflicted_file   # 一旦削除
$ svn mrege ^/braches/hoge --ignore-ancestry -c XXXX  # マージ元に追加された内容を作業ディレクトリに反映
18
19
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
19