【发布时间】:2011-09-29 10:53:53
【问题描述】:
我做了一些提交,现在我希望它们(比如从分支中的一些提交)将它们移动到一个新的分支中,即:
master - O1-O2-O3-X-C1-C2-C3
成为
master - O1-O2-O3-X
\ new_branch - C1-C2-C3
之后,我需要为提到的提交(C1、C2、C3)打补丁,以便我的一个朋友能够将它们应用到他们的树上。
至于第一部分,我想我应该这样做:
- 为 x -> C3 创建补丁
- 重置为 X
- 创建分支
- 应用补丁
尽管here 他们建议我可以使用git branch new_branch; git reset --hard X; git checkout new_branch。 reset --hard 不会删除我的提交吗?
我不太擅长 git,无法在没有指导的情况下完成所有操作。谢谢!
【问题讨论】:
-
建议的序列工作正常,因为 new_branch 现在指向提交并防止它们被垃圾收集。不过,更一般地说,如果您不确定 git 中的某些内容,请创建一个测试存储库,启动 gitk 并尝试一下。最坏的情况 - 您使用测试存储库(大不了)。另一件值得一提的是,您可以使用 git clone --mirror 镜像您当前的存储库。这为您提供了备份,以防万一您搞砸了。只需从您的镜像中一次又一次地运行 git remote update ,一切都会好起来的 :)