ライブとステージの2つのブランチを持つリポジトリがあります。リポジトリは、Webベースのアプリケーションのコードを保持します。ステージブランチとライブブランチ用に2つの異なる.htaccessファイルを維持したいのですが、ステージサイトにサービスを提供する性質が少し異なるため、バージョン管理を維持したいと思います(たとえば、現時点では、キャッシュのタイミングを調整したい)別の方法で)。
私はgitの初心者なので、簡単な説明があるかもしれませんが、ライブで変更をプルするワークフローが必要です(単純なgit merge stage
)、ライブブランチの既存の.htaccessを上書きしませんでした。これを構成する方法はありますか? gitに大きな概念が欠けていますか?
同様に、変更を追跡したいが、それらをライブにマージしたくない(ただし、おそらく多くの).htmlファイルのチャンクもあります。明確にするために、ライブとステージでこれらのファイルの変更を追跡する必要がありますが、マージを行うときにこれらの特定の変更をマージしないことを知っています。
私は 別の質問への回答 スタックオーバーフローで見つけました、クレジットはfcurellaに行きます:
ファイル
config.php
を除外したいとします。ブランチA:
同じディレクトリに
.gitattributes
という名前のファイルを次の行で作成します:config.php merge=ours
。これは、ファイルをマージするときに使用する戦略をgitに指示します。この場合、常にバージョンを保持します。マージするブランチのバージョン。
.gitattributes
ファイルを追加してコミットしますブランチBの場合:手順1〜2を繰り返します
今すぐマージしてみてください。ファイルはそのままにしておく必要があります。
これは、よりスケーラブルなソリューションのようです。
Ankur、これを試してください:
ライブブランチにチェックアウトしていると仮定して、次を実行します。
git merge --no-commit --no-ff stage
これにより、2つのブランチがマージされますが、新しいコミットを行う代わりに失敗し、これらの変更がインデックスファイルと作業ディレクトリに残ります。ライブブランチで.htaccess
ファイルをそのまま保持したいので、ライブからこのファイルをチェックアウトできます。
git checkout live .htaccess
これで、作業ツリーには.htaccess
を除いてステージからのすべての変更が含まれるため、マージコミットを完了することができます。
git commit -m "Pulled changes from stage" -a