2013-01-16 22 views
5

私は開発リポジトリとデプロイリポジトリを持っています。コードをデプロイするとき、コードベースはdevからチェックアウトされ、rsyncはデプロイされた作業コピーに対してチェックされ、デプロイリポジトリにコミットされます。したがって、これらのリポジトリは別々ですが、類似しています。2つのgitブランチ間でdiffをマージして作業コピーに適用する

devにはブランチがあります。私はそのブランチを展開作業コピーに "適用"したいと思います。つまり、ブランチ上のすべてのコミット(マージを除く)をデプロイリポジトリ(可能な場合は1つのコミット)に再生するか、ブランチとマスターを比較してデプロイ作業コピーに適用したいとします。

私は似たのsvnコマンドがあることだと思う:DEPLOY_DIRも作業コピーである必要はありません

svn merge $SVN_REPO/trunk $SVN_REPO/branch/dev_branch deploy_dir 

...。

これは可能ですか?

+1

ちょうど別のリモートリポジトリを追加して、定期的なマージを行います? – zerkms

+0

誤ったリベースを含め、これを複雑にしているリポジトリの異常がいくつかあります。通常のマージを試みると、ほぼすべてのファイルの競合が発生します。 –

答えて

9

1つの方法は、他のレポからブランチを取得することです:

cd <deploy-path> 
git remote add devel <devel-path> 
git fetch devel 

git cherry-pick devel/master...devel/branch # Assuming your branch is based on master 

もう一つの方法は、パッチを作成し、それを適用することです:

git diff commitid1 commitid2 > something.patch 
cd deploy 
git apply something.patch 
+0

diff/patchメソッドは完全に機能しました。無視したい祖先の異常がいくつかあったからです。いくつかの画像が追加されているので、私は git diff --binary c1 c2> something.patch –

+0

を使っています。上記のsvnコマンドに似ている "git merge --ignore-ancestry" –

+0

@Tim Yeah、マージは機能しません。代わりにチェリーピックを試してみてください。 – nishantjr

関連する問題