1

ファイルの変更と名前の変更操作の間に競合があると言っている git マージに問題があります。分岐は次のように行われました。

  1. ベース -> more_design
  2. more_design のいくつかの変更
  3. more_design -> fixed_toolbar
  4. fixed_toolbar 最小限の変更 (PNG ファイルには変更なし)
  5. more_design で PNG ファイルを変更する
  6. more_design を base にリベース (PNG ファイルには変更なし)
  7. fixed_toolbar からのマージを試みます (git は PNG ファイルで混乱します)

エラーのサンプル:

Auto-merging ui-app/css/images/icons-retina/item-unselected.png
CONFLICT (add/add): Merge conflict in ui-app/css/images/icons-retina/item-unselected.png
CONFLICT (rename/delete): ui-app/css/images/icons-retina/item-selected.png deleted in HEAD and renamed in fixed_toolbar. Version fixed_toolbar of ui-app/css/images/icons-retina/item-selected.png left in tree.

そして、私たちのバージョンを受け入れようとすると、そのようなバージョンはないと表示されます (ただし、ブランチには確実に存在します)。

git checkout --ours -- ui-app/css/images/icons-retina/item-*.png
error: path 'ui-app/css/images/icons-retina/item-unselected.png' does not have our version
error: path 'ui-app/css/images/icons-retina/item-selected.png' does not have our version
4

1 に答える 1

6

リベースとマージは混同しないでください!

リベースされる可能性のあるものから分岐したり、分岐元である可能性のあるものからリベースしたりしないでください。

次のような履歴があります。

base - b1 - b2 - b3 - 
  \               \
   \              more_design' - m1' - m2' - m3' - m4' >?
    \                                               ..
    more_design - m1 - m2 - m3 - m4              ..  
                        \                      ..
                        fixed_toolbar - f1 - f2

上記のリベースmore_designにより、完全に新しいバージョンの履歴が作成されました。m1..m4の代わりにm1 '..m4'になりました。これらは、git に関する限り、完全に異なるリビジョンです。したがって、最新の共通の祖先はbaseです! したがって、「ローカル」の変更はm1'+m2'+m3'+m4'であり、「リモート」の変更はm1+m2+f1+f2です。また、m3'm4'はm1m2の変更をオーバーライドするため、競合が発生しています。

解決策は、fixed_toolbar をリベースされた more_design ブランチにリベースすることです。どちらかとして

git checkout fixed_toolbar
git rebase --onto more_design original_more_design

または、対話型マージを使用し、git が認識しない場合はリビジョン m1 と m2 を手動で削除します。多くの場合、次のようになります。

git checkout fixed_toolbar
git rebase -i more_design

そして、マージするだけです。または、fixed_toolbar の変更をチェリー ピッキングします。最近のgitは理解する必要があります

git cherry-pick original_more_design..fixed_toolbar
于 2013-03-01T08:01:26.310 に答える