2016-05-04 15 views
0

私たちは2つのGitリポジトリ - 1つのプロダクションともう1つのプロダクションを持っています。テスト1から最後の3つのコミットをプロダクションレポに移動することは可能ですか?いくつかの最後のコミットを別のリポジトリに移動しますか?

両方とも同期しているため、プロダクションレポは現在コミットno.50にあり、テストレポはコミットno.53にあります。したがって、最後の3つだけが新しいものです。

今はテスト用のレポをプロダクション用のものにコピーし、gitは何が新しくなっているかを見て、それらのファイルだけをプロダクション用のレポにコミットする方法で作業しました。良いアプローチではありませんが、うまくいきます。しかし、面倒でエラーが起こりやすいので、私は代替案を探しています。

答えて

2

リポジトリ間のコミットの移動は常にプッシュ/プル/フェッチです。私。

/test/repo $ git push path/to/production/repo fromWhichBranch:toWhichBranch 

またはその逆:

/prod/repo $ git pull path/to/test/repo 

または

/prod/repo $ git fetch path/to/test/repo 
/prod/repo $ git merge FETCH_HEAD 
0

ソースリポジトリをセカンダリリモートとして追加することができます。あなたはID commit_aにコミットコピーしたい場合は

git remote add source_repo path/to/source/repo 
git fetch source_repo 

することができますちょうど桜のピックがPRODへのテストからコミットこの方法を実行し、ちょうどあなたが右の枝にしていると、例えばgit cherry-pick <commit_id>

を行うことを確認してくださいテストからPRODに、PRODレポになった、と実行します。

git remote add test_repo path/to/test/repo 
git fetch test_repo 
git cherry-pick commit_a 

2レポのは、常に生産レポは常に最終的にテストに同じコミットをしていますつまり、同じ親を共有する場合は、あなたがリベースを行うことができますあなたがPRにいるとき試験を遠隔操作として追加した後の卵巣移植レポ:

git rebase test_repo/master master 
+0

私はチェリーピック方式を使用することはありません。もっと詳しく説明できますか?あなたには経験があるので、物事を混乱させないように避けるべきことを分けてください。 – sandalone

+0

@sandaloneあなたはそれについて[ここ](https://git-scm.com/docs/git-cherry-pick)を読むことができます。それがしているのは、commit_idによって与えられたコードの変更を現在のブランチにコピーすることだけです。 – yelsayed

+0

チェリーピックは彼の歴史のために悪いアイデアです – kan

関連する問題