将最后一些提交移动到另一个存储库?

时间:2016-05-04 09:45:15

标签: git

我们有2个Git回购 - 一个生产,另一个是测试。是否有可能将最后一次提交从测试一次移至生产仓库?

它们都是同步的,意味着生产仓库当前处于提交号50,而测试仓库是在提交号53。所以只有最后3个是新的。

现在,我的工作方式是将测试回购复制到生产版本,git会看到新版本,并且只会将这些文件提交到生产回购。不是一个好方法,但它的工作原理。然而,它很乏味且容易出错,所以我试图寻找替代方案。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您可以将源代表作为辅助远程添加到目标代理中。做

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

这样你就可以选择从测试到产品的提交,只需确保你在正确的分支上并做git cherry-pick <commit_id>

例如,如果您要将标识为commit_a的提交从test复制到prod,请转到prod repo,然后执行:

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

如果两个repo将始终共享同一个父级,这意味着生产仓库将始终在测试中始终具有相同的提交,则在将测试添加为远程后,您可以在生产仓库中执行rebase:

git rebase test_repo/master master