2012-03-01 14 views
2

私はAndroidアプリケーションを開発しており、開発サイクル全体を通してGitを使用しています。今では、元の安定したアプリケーションをデバイスにインストールしたまま、試用して試してみる人々のための実験的な機能を構築してリリースしたいと思っています。Git実験ブランチまたは別の実験リポジトリ?

これは、別のpackage-nameを使用する必要があることを意味します。これは、開発プロジェクトのいくつかの基本ファイルを変更します。私はまた、アプリケーションを明確に区別するための別個のアイコンを持っていたいと思います。

ここで取る方法を知るのに十分なGitには慣れていません:実験室を作るときに分岐する実験ブランチを作成するか、この実験的な作業を別々にしておきますかgit-repo?

私はどちらかの方向への実際の流れにいくつかの問題があります。

  • 私が実験ブランチを作成した場合、パッケージ名の変更と実験の詳細を明確に分離することを(誤って)したくありません。私は追加の変更を加えることなく、コードの作業部分をマージしたいだけです。
  • 別のレポを作成した場合、実験的なレポの変更をマスターレポにマージするにはどうすればいいのでしょうか。パッケージ名とアイコン?

答えて

3

これはまさにブランチのためのものです。一つの制限は、gitは本当にファイルではなくコミットを見ることです。したがって、典型的には、cherry-pickコマンドを使用して、別のブランチの1つまたはいくつかのコミットをマスターにマージします。

git branch branchx 
git checkout branchx 
... do work, commit (into branchx), repeat... 
git checkout master # return to master 
git log branchx # to find out the ID of the commit to merge back 
git cherry-pick <commit ID from branchx> 

これが望ましいアプローチです。これは、あなたの実験ブランチで作業しているときにこれを念頭に置いておくべきであることを意味します。コミットは、フィックス/フィーチャーに関係するファイルのみを含めるのに十分なほど小さくする必要があります。

代替、あなたはこの関連答え How do you merge selective files with git-merge?

+0

ただ、明確化のために、ベスト・プラクティス・アプローチの質問の並べ替えを参照してください

# from branch master do git checkout branchx file1 file2 file3 

を使用してバックマージするいくつかのファイルを選ぶことができます:実験的なブランチを作成します。私が最初にやることは実験的な変更(パッケージやアイコンの変更)を含むコミットを作成し、実験的な機能を果たしてコード変更をコミットすることです。これは後でマスターに戻って実践的なチェリーピッキングをしてくれるでしょうか? –

+0

はい。コミットは、ファイルそのものではなく、ファイルに対して実行する指示と考えることができます。これらの手順は、マスターの任意の時点で適用できます。 – Alkaline

+0

きちんとした明確な回答。あなたは私の受け入れられた答えをこの1つで得る。 –

1

私は確かにブランチに行きます。あなたはコミットでいくつかの規律を練習しなければならず、必要な部分だけをチェリーピックアップして残りの部分を残すことができるように、それらを十分小さくする必要があります。しかし、私はそれが問題ではないと確信しています。確かに2つの別々のリポジトリ間の変更をマージするのと比較してではありません。

関連する問題