【问题标题】:Git: move specific commits to another branchGit:将特定提交移动到另一个分支
【发布时间】:2013-02-04 23:43:34
【问题描述】:

一个有两个分支的存储库。

主分支提交:

c1、c2、c3、c4、c5、c6、c7、...、c15、...

暂存分支提交:

c1、c2、c3、c4、c5、c6、c7

我想将 c7 之后的所有提交从主分支移动到暂存分支

然后恢复Master分支

git reset --hard c7-hash

如何将特定提交从一个分支移动/复制到另一个分支?

【问题讨论】:

标签: git git-commit


【解决方案1】:

在您描述的情况下,暂存分支上的所有提交也都在主分支上,这很容易:

git checkout staging
git merge master
git checkout master
git reset --hard c7-hash

合并将是快进。

在一般情况下,您可以使用git cherry-pick c8 c9 c10 c11 c12 c13 c14 c15 挑选单个提交到当前分支。 git cherry-pick ..master 是挑选 master 上的所有提交但不是当前分支的更短的方法,git help cherry-pick 显示了其他示例

【讨论】:

  • 在完成此操作后,假设您将x 提交到主分支。然后你将 master 合并到 staging 中。由于这些提交已经在 master 中重置,因此合并到暂存中是否会正确地将 x 合并到暂存中,而 not 在暂存中恢复 c8...c15?想要确保 c8...c15 在合并后保持在暂存状态。
  • @MarcusLeon,合并不会恢复这些提交。这些提交没有在 master 中恢复,它们被完全删除。重置不是还原。像这样创建测试提交和测试场景很容易,试试吧。
猜你喜欢
  • 2022-10-19
  • 2011-05-06
  • 1970-01-01
  • 1970-01-01
  • 2017-06-07
  • 1970-01-01
  • 2014-11-19
  • 2011-09-16
  • 1970-01-01
相关资源
最近更新 更多