2016-07-21 3 views
1

gitリポジトリ内に多数の生成されたPHPファイルがあります。これらのファイルは、特定のコンテンツを作成するためにアプリケーション内のエディタを使用すると生成されます。コンテンツを展開可能な形式にしておく必要があります。なぜそれがgitにチェックインされるのでしょうか。作成したgitで1行の衝突を自動マージする

//::

迷惑が生成されたファイルのような上部のコメントを持っているということである事例の多くは2016年7月21日9時24分25秒

このタイムスタンプがありますファイルへの唯一の変更。しかし、gitは、ローカルとリモートの両方が変更されたときにこれを矛盾とみなします。これにより、多数の手動マージ競合が発生し、プルで解決できなくなります。

gitに競合を引き起こす代わりに、この行だけを「Ours」に自動マージするように指示する方法はありますか?

ファイル全体、「ours」または「theirs」と「smudging」を自動マージするソリューションを検索して見つけましたが、これらのどれも本当に必要なことはしないと思います。私たちは//作成されたコメントをチェックインしますが、gitにその特定の行のコンフリクトを自動マージさせるだけです。

どのような考えですか?

+3

このフィールドは完全に削除する必要があります。「作成された時間」には、gitログにまだ含まれていない情報は含まれていません。 –

+0

残念ながら私のフィールドではありません。しかし、アプリケーションを編集し、//作成された:コメントを生成している場所を見つけて削除することをお勧めします。 –

答えて

0

gitに競合を引き起こす代わりに、この行だけを「Ours」に自動マージするように指示する方法はありますか?

git mergeには "マージツール"(通常はマージ解決用のGUI)を使用し、必要なものを実行するカスタムツールを実装するよう指示することができます。私はむしろ、次の処理を行い小さなスクリプトを作成します(とその環境に使用しているによってはその難しいことではありません - Windowsの/ Unixの/ bashの/ルビーなど):

  • 実行git mergeをして適切なオプション。
  • スクリプトで競合が検出されなかった場合(出力コードおよび/または終了コードをgit mergeから解析する)、完了です。エルス
  • 、あなたが持つ非常に簡単であるべきで自動的に興味が競合を検出し、固定競合するファイル(あなたがgit mergeからの出力よりも、解析するために少し簡単であるべきgit statusからそれらを取得することができます)
  • をロード正規表現。
  • ファイルを保存します。
  • さらなる競合マーカーが含まれているかどうかを確認してください。そうでない場合、git add
  • すべてのファイルが終了し、競合マーカーがない場合は、git commitです。

この後、マージが完了するか、またはすべてのタイムスタンプが既に解決されている通常の競合解決が必要です。

関連する問題