Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 是否将最后几次提交移动到另一个存储库?_Git - Fatal编程技术网

Git 是否将最后几次提交移动到另一个存储库?

Git 是否将最后几次提交移动到另一个存储库?,git,Git,我们有两个Git回购——一个是生产,另一个是测试。我是否可能将最后3次提交从测试一次转移到生产回购 它们都是同步的,这意味着生产repo当前处于提交编号50,而测试repo处于提交编号53。因此,只有最后3个是新的 现在,我的工作方式是将测试repo复制到生产repo,git将看到新内容,并且只将这些文件提交到生产repo。这不是一个好方法,但它是有效的。然而,这是乏味的,容易出错,所以我试图找到一个替代方案 您可以将源repo作为辅助远程设备添加到目标repo中。做 git remote ad

我们有两个Git回购——一个是生产,另一个是测试。我是否可能将最后3次提交从测试一次转移到生产回购

它们都是同步的,这意味着生产repo当前处于提交编号50,而测试repo处于提交编号53。因此,只有最后3个是新的


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

您可以将源repo作为辅助远程设备添加到目标repo中。做

git remote add source_repo path/to/source/repo
git fetch source_repo
通过这种方式,您可以从测试到prod进行cherry-pick提交,只需确保您位于正确的分支上,并执行git-cherry-pick

例如,如果要将id为
commit\u a
的提交从测试复制到产品,请转到产品回购,然后执行以下操作:

git remote add test_repo path/to/test/repo
git fetch test_repo
git cherry-pick commit_a
如果两个回购始终共享同一个父项,这意味着生产回购最终将在测试中始终具有相同的提交,则在将测试添加为远程后,您可以在生产回购中执行重新基准:

git rebase test_repo/master master

您可以将源repo作为辅助远程设备添加到目标repo中。做

git remote add source_repo path/to/source/repo
git fetch source_repo
通过这种方式,您可以从测试到prod进行cherry-pick提交,只需确保您位于正确的分支上,并执行git-cherry-pick

例如,如果要将id为
commit\u a
的提交从测试复制到产品,请转到产品回购,然后执行以下操作:

git remote add test_repo path/to/test/repo
git fetch test_repo
git cherry-pick commit_a
如果两个回购始终共享同一个父项,这意味着生产回购最终将在测试中始终具有相同的提交,则在将测试添加为远程后,您可以在生产回购中执行重新基准:

git rebase test_repo/master master

在存储库之间移动提交总是push/pull/fetch。即

/test/repo $ git push path/to/production/repo fromWhichBranch:toWhichBranch
反之亦然:

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


在存储库之间移动提交总是push/pull/fetch。即

/test/repo $ git push path/to/production/repo fromWhichBranch:toWhichBranch
反之亦然:

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


我从来没有用过樱桃采摘法。你能详细解释一下吗?既然你有经验,请分享一些我应该避免的事情,不要把事情搞砸。你可以阅读更多关于它的内容。它所做的只是将commit_id给出的代码更改复制到您当前所在的分支中。Cherry pick对他的历史来说是个坏主意。我同意,这是他要求的,但我扩展了答案,添加了一个选项,如果生产将始终具有所有测试的提交,则重新设置基础。为什么不简单合并?在他的情况下,它甚至将是快进的。我从来没有用过樱桃采摘法。你能详细解释一下吗?既然你有经验,请分享一些我应该避免的事情,不要把事情搞砸。你可以阅读更多关于它的内容。它所做的只是将commit_id给出的代码更改复制到您当前所在的分支中。Cherry pick对他的历史来说是个坏主意。我同意,这是他要求的,但我扩展了答案,添加了一个选项,如果生产将始终具有所有测试的提交,则重新设置基础。为什么不简单合并?在他的情况下,这甚至将是快进。