我们有2个Git回购 - 一个生产,另一个是测试。是否有可能将最后一次提交从测试一次移至生产仓库?
它们都是同步的,意味着生产仓库当前处于提交号50,而测试仓库是在提交号53。所以只有最后3个是新的。
现在,我的工作方式是将测试回购复制到生产版本,git会看到新版本,并且只会将这些文件提交到生产回购。不是一个好方法,但它的工作原理。然而,它很乏味且容易出错,所以我试图寻找替代方案。
答案 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