私はgitにかなり慣れていないので、おそらく100%明確ではないことを申し訳ありません。
コンパイル済みファイル (より正確には、PLC 産業用オートメーションの Studio5000 用の Rockwell の .acd ファイル) を使用しています。ファイルの形式は重要ではないと確信しています。複数のユーザーでプロジェクトに取り組みたい。Git を中央サーバーとして使用し、PLC のブランド マージ ツール (この例では Rockwell) を使用しています。Rockwell の Merge ツールを TortoiseGit の MergeTool としてセットアップしましたが、すべてが「ほとんど」うまくいっています。
ただし、プルを実行してローカル リポジトリを更新すると、ファイルが Git で通常動作する .txt ファイルではないため、競合が 100% 発生します。問題は、プル (競合が発生) し、Git にマージするように指示すると、ローカル ファイルが変更されることです (ファイルのいたるところに THEIRS と OURS を少しずつ配置することで推測しています)。この方法で競合を解決したい場合、デフォルトのリーダーのファイルが破損します。ファイル BASE、REMOTE(THEIRS)、および LOCAL(OURS) は、TortoiseGit の Edit Conflict を使用する場合にのみ表示されます (2 つのバージョンをマージするように指定した場合、これらは自動的には表示されません)。
私の問題は、破損したファイルを解決すると(ワンクリックで)ユーザーがコミットできるため、経験のない人や注意を払わない人がサーバー上の破損したファイルを簡単にプッシュできることです。以前のコミットに簡単に戻す/リセットできることはわかっていますが、ログ履歴がややこしくて、破損したバージョンを追跡したくありません。また、「一般ユーザー」はおそらく以前のバージョンに戻すのに苦労し、助けが必要になる可能性があるため、多くの時間を失うことになります。
私がやりたいことは最初です: ユーザーがファイルをマージしようとすると、Git は作業ディレクトリ (作業ツリーなど) からコンパイルされたファイルを変更しません。
2番目:これが可能であると確信しています。方法はわかりませんが、競合が発生したときにマージを選択するときに、BASE、LOCAL、およびREMOTEファイルを自動的に生成したいと思います。これは、手動で行うよりも簡単です。 [競合の編集] オプションを選択します。.docx ファイルは既にこれを行っていますが、私の .acd ファイルはそうではありません。説明はありますか?
私が言ったように、私はかなり新しいので、どんなアイデアにも広くオープンです! :)