GitHub:将master提交应用到另一个分支

时间:2014-01-28 18:00:09

标签: git github branch git-commit

与此问题相关的存储库位于here

我从主分支创建了一个名为apt-offline-python3-dev的新分支 GitHub网页界面。

我想要做的是接受来自提交774 - 784的主分支的提交,因此使它们属于apt-offline-python3-dev分支,而不是属于master分支。

因为,当您查看latest提交时,它清楚地说明了 master 而不是 apt-offline-python3-dev ,这是合乎逻辑的,因为我将所有这些提交发送到主分支, 在重组存储库之前。

然后我想将主分支重置回其原始状态,这意味着返回提交9f2f667d13,如2013年6月16日this页上所示。

现在,我知道git cherry-pickgit merge,但实际上并不知道这是否可行。

更新
马特的答案+1给我带来正确的方向。不幸的是,仍存在持续存在的问题 当我按照Matt建议的顺序发出命令时,会发生什么:

git checkout apt-offline-python3-dev
Branch apt-offline-python3-dev set up to track remote branch apt-offline-python3-dev from origin.
Switched to a new branch 'apt-offline-python3-dev'

git cherry-pick 9f2f667d134330c0de8700258ab98cae0ac89438
error: could not apply 9f2f667... half implementation of lock, please verify
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'

因为它已经失败了,所以不需要调用git revert命令。

现在,如果有人翻转订单并将git revert替换为git reset --hard,那么它确实有效:

git reset --hard 9f2f667d134330c0de8700258ab98cae0ac89438
HEAD is now at 9f2f667 half implementation of lock, please verify

git cherry-pick ba8662eb8e01cebc969126650baa22776a27430d
[apt-offline-python3-dev 78c9aa5] Another initial test commit
 Author: codingaround <codingaround@outlook.com>
 24 files changed, 1438 insertions(+), 1328 deletions(-)
 create mode 100644 IMPORTANT_README.md
 rewrite apt_offline_core/AptOfflineMagicLib.py (85%)

git log显示哈希值是新的哈希值:

git log
commit 78c9aa5b732d559f141c9bf77c801c1644710432
Author: codingaround <codingaround@outlook.com>
Date:   Mon Sep 30 20:11:55 2013 +0200

    Another initial test commit

现在仍然存在的问题是:如何保留提交哈希值,或者这是不可能的?

1 个答案:

答案 0 :(得分:2)

使用git cherry-pick将更改从master应用到所需的分支:

git checkout apt-offline-python3-dev
git cherry-pick <sha1>
git cherry-pick <sha1>
...

然后,在单独的步骤中,将更改还原为master:

git checkout master
git revert <sha1>
git revert <sha1>
...

(git revert将添加新的提交,撤消所做的更改)