3

git でマージするときに「自分の変更」を強制するにはどうすればよいですか? 誰かがすべての bin ディレクトリを git に入れましたが、ひどいマージ競合が発生しました :(

現在、次のように述べています。

この問題を解決したら、「git rebase --continue」を実行します。このパッチをスキップしたい場合は、代わりに「git rebase --skip」を実行してください。元のブランチを復元してリベースを停止するには、「git rebase --abort」を実行します。

マージしたくありません。変更を使用してこれらのファイルをすべて削除したいだけです。

編集:ほとんどのファイルは、自動マージによって、または競合がなかったため、正常にマージされました。ただし、次のようなものはまだかなりの数が存在します。

警告: バイナリ ファイルをマージできません: src/reports/obj/Debug/TempPE/GroupMailDS.Designer.cs.dll (HEAD と追加された gitignore)

4

3 に答える 3

8

これについて 100% の自信があるわけではありませんが、次のような場合に適していると思います。

git merge otherbranch -s recursive -X ours

このコマンドは、再帰戦略を使用してトピック ブランチをチェックアウト ブランチにマージしようとします。-X ours オプションは、現在チェックアウトされているブランチが信頼できるものであると仮定して、競合を自動的に解決する再帰戦略のサブセットです。

于 2010-06-23T15:39:50.647 に答える
1

あなたはできる:

  • git rmディレクトリ(これらのバイナリファイルがすべて含まれており、obj そもそもコミットされるべきではありませんでした)
  • .gitignoreディレクティブを追加して、将来のobjディレクトリがgit status(および追加されないように)表示されないようにします。
  • git pushその新しいツリーは、' obj'ディレクトリが他のGitリポジトリからも消えるはずであるという事実を広めるのに役立ちます(したがって、マージはまったくトリガーされません)。

他のすべての参加者の同意を得ることができる場合は、次のことができます。

ただし、公開された履歴を新しいものに置き換える必要があるため、他のユーザーが同意した場合にのみ実行する必要があります。

于 2010-06-23T10:50:45.573 に答える
0

バイナリを自分のバイナリに置き換えるか(マージは実際には不可能であるため)、不要なバイナリを git rm するだけでよいと思います。完了したら、単に git rebase --continue

于 2010-06-23T12:31:40.063 に答える