いくつかのバージョンのプロジェクトがあり、それぞれが明らかに独自の git ブランチで実行されます。プロジェクトには、追跡された構成ファイル (Google アプリ エンジンの app.yaml) があり、特にバージョン名を保持しています。
あるブランチから別のブランチにバグ修正をマージするときに、その行を無視するように git に指示する方法を教えてください。
そうするための賢明な方法はありますか?
簡単な答え:いいえ。
面白い答え:英国英語でgitは、不快または軽蔑的な人を意味します。
実際の答え:
Git は、個々のファイルではなく、プロジェクト/リポジトリの変更を追跡するために設計されました。
Git の設計は、大規模な分散開発プロジェクトを維持する Linux に関する Torvalds の経験と 、同じプロジェクトから得たファイル システムのパフォーマンスに関する彼の深い知識と、動作するシステムを短期間で作成するという緊急の必要性を統合したものです。
それを行う方法はないと思います(これはインテリジェントと呼ばれます)。
PS: 回答は一部の人にとって不快かもしれませんが、git の背後にあるイデオロギーは、人々に個々のファイルの移動を「させない」ことでした。
できることの 1 つは、ブランチ間の差分を作成し、パッチの生成/マージ中に特定のファイルを完全に無視することです。実際に適用可能/有益かどうかはわかりません。
試すことができる別の解決策は次のとおりです。別のブランチから特定のファイルを「マージ」する
はい、それを行う方法があります。Git は、このような場合のカスタム マージ ドライバーをサポートしています。
マージ ドライバで、ファイルの 3 つのバージョンすべてをチェックアウトし、それらすべてで問題の行を削除する必要があります。次にgit merge-file
、結果を実行します。git merge-one-file
ヘルパーにもいくつかのポインターが含まれている場合があります。ours
完了したら、バージョンから結果への行を readdします。
本当にその線を追跡したくない場合は、汚れときれいなフィルターを使用できます。しかし、それはあなたが望んでいることではないと思います。