Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.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_Branch_Patch - Fatal编程技术网

Git:将最后的几个提交移动到一个新分支,然后为它们创建一个补丁

Git:将最后的几个提交移动到一个新分支,然后为它们创建一个补丁,git,branch,patch,Git,Branch,Patch,我已经做了一些提交,现在我希望它们(比如从分支中的一些提交)将它们移动到新的分支中,即: master - O1-O2-O3-X-C1-C2-C3 成为 master - O1-O2-O3-X \ new_branch - C1-C2-C3 之后,我需要为所提到的提交(C1、C2、C3)制作补丁,以便我的一位朋友能够在他们的树上应用它们 关于第一部分,我想我应该做一些类似的事情: 为x->C3创建修补程序 重置为X 创建分支 应用补丁 尽管他们建

我已经做了一些提交,现在我希望它们(比如从分支中的一些提交)将它们移动到新的分支中,即:

 master - O1-O2-O3-X-C1-C2-C3 
成为

master - O1-O2-O3-X  
                   \ new_branch - C1-C2-C3
之后,我需要为所提到的提交(C1、C2、C3)制作补丁,以便我的一位朋友能够在他们的树上应用它们

关于第一部分,我想我应该做一些类似的事情:

  • 为x->C3创建修补程序
  • 重置为X
  • 创建分支
  • 应用补丁
  • 尽管他们建议我可以使用
    git-branch-new\u-branch;git重置——硬X;git签出新分支机构
    reset——硬删除我的提交吗

    我对git不太在行,在没有指导的情况下我无法完成这一切。谢谢

    No
    reset--hard
    不会删除您的提交,因为它们仍然会被“
    new\u分支
    ”分支引用。
    (这意味着,通过签出“
    new\u branch
    ”,您将恢复并再次看到这些提交)

    但它会删除工作树中任何未跟踪的更改,所以在键入该命令之前,请确保没有任何正在进行的工作

    您可以在“”中看到该命令序列的更详细说明


    要完成的注释,如果git重置删除或擦除了任何提交,您仍然可以使用
    git reflog
    获取这些提交 见:

    • “”
    • “”

    建议的序列工作正常,因为新的分支现在指向提交并防止它们被垃圾收集。不过,更一般地说,如果您对git中的某些内容不确定,请创建一个测试存储库,启动gitk并进行尝试。最坏的情况是——你用软管连接你的测试库(大不了)。另一件值得一提的事情是,您可以使用git clone-mirror镜像当前的存储库。这给了你一个备份,以防你搞砸了什么。只要在镜像中不时运行git remote update,一切都会好起来:)