【发布时间】:2013-05-03 10:59:58
【问题描述】:
我有 2 个远程分支,dev 和 rls。我们目前正在开发dev 分支。我的 rls 分支是空的/未触及。我想将特定的提交(sha-1 哈希)从 dev 移动到 rls 分支。请指导我在 Git 中做同样的事情的最佳、安全和简单的方法。
谢谢...
【问题讨论】:
我有 2 个远程分支,dev 和 rls。我们目前正在开发dev 分支。我的 rls 分支是空的/未触及。我想将特定的提交(sha-1 哈希)从 dev 移动到 rls 分支。请指导我在 Git 中做同样的事情的最佳、安全和简单的方法。
谢谢...
【问题讨论】:
一种方法是使用git cherry-pick,以便选择要在rls 分支上报告的确切提交。
请参阅“Can anyone explain what git cherry-pick does?”了解更多信息。
然后可以将rls推送到对应的远程分支。
所以:
rls local 分支,看起来像你想要发布的东西(推送)rls 推送到远程仓库【讨论】:
如果您正在寻找 rls 作为某个任意提交处的 dev 分支的快照,您可以使用 git reset 将您的分支指针移动到您正在寻找的提交。确保在执行此操作时没有未暂存的更改。
git checkout rls
git reset --hard <SHA-1 of commit in dev>
示例:
如果dev 看起来像:
A - B - C - D
并且您希望 rls 看起来像:
A - B
你会的
git checkout rls
git reset --hard <sha-1 of B>
但是,如果您想选择更具体的提交范围并将其推送到rls,则需要使用git cherry-pick 命令。
git checkout rls
git cherry-pick <non-inclusive-starting-SHA1>..<inclusive-ending-SHA1>
【讨论】:
如果您想将所有代码移动到 rls 分支的特定提交之前,请使用 git merge。例如,
git checkout rls
git merge [SHA1 of last commit you are interested in]
【讨论】: