2

ソース管理には Windows Powershell で posh-git を使用しています。

私たちは、ビルドしたアセンブリの一部を git リポジトリに保存するという、うらやましい立場にあります。なぜそんなことをしてはいけないのかについての説教はすべて知っていますが、今のところは我慢しなければなりません。ありがたいことに、それらは別のソリューションにありますが、2 人の人が自分のブランチで同時にそのソリューションに取り組み、最後の 1 人がマージの競合を引き受けることがあります。もちろん、プロセスは次のようになります。

  1. 人 A は開発に変更を加えます。
  2. ユーザー B は、アセンブリと更新ソース コードの両方を含むこれらの変更をマージします。
  3. ユーザー B は競合を解決し、保持する各アセンブリのバージョンを確認する必要があります。これは面倒で時間がかかり、B がソース コードをマージした後にアセンブリを再構築するため、不要です。
  4. ユーザー B はアセンブリを再構築し、新しいコミットを行ってマージを完了します。

アセンブリは、リポジトリのフォルダーにあります: /Source/Foundation Assemblies/

B さんのブランチには競合する変更がある可能性があるため、リモートからすべての変更を取得することはできませんが、/Source/Foundation Assemblies/ フォルダーのみに対して「自分のものを取得する」または「自分のものを取得する」ことが役立ちます。これはgitでできることですか?

コマンドラインの例が役に立ちます。通常、マージは次のようになります。

git merge develop

/Source/Foundation Assemblies/ フォルダーを .gitignore し、マージ後に .gitignore から削除することは可能かもしれないと考えていましたが、それは 3 つのステップです。コマンドラインから 1 つで実行できれば、それは素晴らしいことです!!!

どんな助けでも大歓迎です!

4

3 に答える 3

2

あなたの場合の「正しい」方法は、マージをコミットする前にアセンブリを再構築することです。なぜあなたがこれをしないのかわかりません。次の手順が機能するはずです。

  1. git addおよび競合するすべてのソースを解決します。次に、マージ中に何が起こっても、コミットする内容に影響を与えるべきではありません。
  2. 競合するアセンブリ ファイルを削除します。git 情報で何もする必要はありません。ファイルを削除するだけです。
  3. アセンブリをビルドします。
  4. git add準備が整ったアセンブリ。
  5. 次にコミットします。得られるのは、ローカルとリモートの両方の変更を含むマージです。

編集:これを試してください:

  1. git rm --force -r <dirname>
  2. mergetool を実行すると、バイナリ ファイルが表示されるはずです (表示されkdiff3ませんでした) 。
  3. ビルド アセンブリ
  4. git add <dirname>
  5. 専念

私が理解しているように、このbashスクリプトを試してあなたのケースを再現しました。

于 2016-02-16T20:42:07.537 に答える
0

使用できるいくつかのマージ戦略があります。

解決

これは、3 方向マージ アルゴリズムを使用して 2 つのヘッド (つまり、現在のブランチとプルした別のブランチ) のみを解決できます。交差するマージのあいまいさを慎重に検出しようとし、一般的に安全で高速であると考えられています。

再帰的な

これは、3 方向マージ アルゴリズムを使用して 2 つのヘッドのみを解決できます。3 方向マージに使用できる共通の祖先が複数ある場合、共通の祖先のマージ ツリーを作成し、それを 3 方向マージの参照ツリーとして使用します。これにより、Linux 2.6 カーネルの開発履歴から取得した実際のマージ コミットで行われたテストにより、ミスマージを引き起こすことなく、マージの競合が少なくなることが報告されています。さらに、名前の変更を含むマージを検出して処理できます。これは、1 つのブランチをプルまたはマージするときのデフォルトのマージ戦略です。

「再帰」戦略は、次のオプションを取ることができます。

私たちのもの

このオプションは、「私たちの」バージョンを優先することにより、競合するハンクを強制的に自動解決します。マージ結果には、当方と競合しない他のツリーからの変更が反映されます。バイナリ ファイルの場合、コンテンツ全体が弊社側から取得されます。

これを、他のツリーに何が含まれているかをまったく調べない「ours」マージ戦略と混同しないでください。それは、他のツリーが行ったことをすべて破棄し、「私たちの」歴史にはその中で起こったことすべてが含まれていると宣言します。

彼らの

これは「ours」の反対です。

そしてさらに多くのものが主なものです。

于 2016-02-16T19:30:19.000 に答える