3

一部のファイルを常にマージしないままにしておくことは可能ですか?

私が欲しいのは:

(A) と (B) の 2 つのブランチがあり、それらに同じファイルがある場合。例えば、

ブランチ (A) の "setup" ファイルには次の内容が含まれています。

this is setup
in a branch A

ブランチ (B) では、ファイル "setup" に次の内容が含まれています。

this is setup
in a branch B

これらのブランチにはコミットされていないファイルはありません (異なるブランチの同じファイルに対する異なるコミット)。

目標は、これらのブランチをマージした後、これらのファイルを変更しないようにすることです。

ローカル バージョンを常に選択するように Git に指示する方法およびmaster からのファイルを Git とマージしないようにする方法 の解決策は、これには機能しません。マージ中に競合が発生した場合にのみ機能するためです。(そうですね、これら 2 つのブランチをマージすると競合が発生し、一度だけ機能します。しかし、(A) を (B) にマージし、次に (B) を (A) にマージすると、ファイルは同じになります。両支店)

GITにはこの種の可能性がありますか?

4

5 に答える 5

4

いいえ、git がマージを処理する方法のため、git でこれを行う簡単な方法はありません。

私は間違っているかもしれませんが、設定ファイルがマージされないようにしたいようです。そうですか?構成ファイルを処理するためのより良い/他の方法があるためです。

このページでは、いくつかの状況に対処するためのいくつかの解決策について説明します。

概要:

  • プログラムを変更できる場合は、追跡されていない構成ファイルを他の人に上書きさせてください
  • プログラムを変更できない場合は、構成ファイル自体を追跡するのではなく、代わりにテンプレートを追跡します。
于 2012-09-04T11:03:07.983 に答える
1

マスターブランチや開発ブランチとは本当に異なるものにする必要がある場合は、Ikke回答に記載されている2番目のオプション、バージョン2の値ファイル(マスター用と開発ブランチ用)、およびテンプレートファイルをお勧めします。

複数の値ファイルがあるということは、それらがブランチ間のマージの問題にならないことを意味します(各ユーザーは現在のブランチに関連する値ファイルのみを変更します)。
テンプレートファイルは、コンテンツフィルタードライバーがチェックアウト時に実際の構成ファイルを表すプライベートファイルを生成するのに役立ちます(テンプレートファイルからの正しい構文と、現在のブランチの後の正しい値ファイルを使用した正しい値))。

フィルタードライバー

于 2012-09-04T12:19:54.987 に答える
1

少し長くなりました--no-commitが、最初のマージ ステップに を使用し、元のファイルをチェックアウトして上書きされていないことを確認してからコミットします。

現時点では、git メーリング リストで「プレマージ フック」に関する議論も行われています。gitリスト

また、git ソース コードを調べて.gitdonotmerge、(既存のコードをすべて再利用する;-) の行に沿ってファイルを (同じディレクトリに).gitignore追加し、マージ戦略オプションを更新して、この適度に一般的な問題が修正されるようにすることもできます。 . 自分のオープンソースのかゆみを掻く喜び!

于 2012-09-05T16:25:16.327 に答える
1

.gitignoreファイルが存在するディレクトリにファイルを作成し、その中にファイル名を入れるだけです!

次に、コマンドを実行します

git rm -cached path_to_setup.file

そのため、マージ、プル、プッシュなどのすべての操作でファイルを無視します...

詳細情報: https://help.github.com/articles/ignoring-files

于 2012-09-04T13:18:36.720 に答える