34

ライブとステージの 2 つのブランチを持つリポジトリがあります。リポジトリには、Web ベースのアプリケーションのコードが保持されます。ステージ ブランチとライブ ブランチ用に 2 つの異なる .htaccess ファイルを維持したいと考えていますが、ステージ サイトを提供する性質が少し異なるため、それらのバージョン管理は維持したいと考えています (たとえば、キャッシュのタイミングを合わせたいと考えています)。異なる)。

私はgitの初心者なので簡単な説明があるかもしれませんが、ライブで変更をプルしたときに(単純なgit merge stage)ライブで既存の.htaccessを上書きしなかったワークフローが欲しいですブランチ。これを構成する方法はありますか? git に大きな概念がありませんか?

同様に、変更を追跡したいが、それらをライブにマージしたくない (おそらく多くの) .html ファイルのチャンクもあります。明確にするために、ライブとステージでこれらのファイルの変更を追跡したいのですが、マージを行うときにこれらの特定の変更をマージしないことを知っています。

4

2 に答える 2

37

Stack Overflow で別の質問に対する回答を見つけました。クレジットは fcurella に送られます。

ファイルを除外したいとしましょうconfig.php

ブランチ A:

  1. .gitattributes次の行を使用して、同じディレクトリに名前の付いたファイルを作成しますconfig.php merge=ours。これにより、ファイルをマージするときに使用する戦略が git に伝えられます。この場合、常にバージョンを保持します。マージ先のブランチのバージョン。

  2. .gitattributesファイルを追加してコミット

ブランチ B: 手順 1 ~ 2 を繰り返します。

今すぐマージしてみてください。ファイルはそのままにしておく必要があります。

これは、よりスケーラブルなソリューションのようです。

于 2010-12-23T16:00:05.450 に答える
8

Ankur、これを試してください:

ライブ ブランチでチェックアウトしていると仮定して、次を実行します。

git merge --no-commit --no-ff stage

これは 2 つのブランチをマージしますが、新しいコミットを行う代わりに失敗し、これらの変更をインデックス ファイルと作業ディレクトリに残します。.htaccessライブ ブランチでファイルをそのまま維持したいので、ライブからこのファイルをチェックアウトできます。

git checkout live .htaccess

これで、作業ツリーには を除くステージからのすべての変更が含まれ.htaccessているため、マージ コミットを確定できます。

git commit -m "Pulled changes from stage" -a
于 2010-12-23T05:10:06.350 に答える