Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.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 - Fatal编程技术网

将git更改提交到多个单独的分支中

将git更改提交到多个单独的分支中,git,branch,Git,Branch,自上次提交以来,我对代码库进行了几个独立的、不相关的更改。理想情况下,每一个变更都应该进行到它自己的分支中,但这并没有发生。现在,我想将每个单独的更改移动到一个单独的分支中,以便在将来某个时候发布其中一个,并将其余的更改合并到第二个发布分支中 我看到了一个关于樱桃采摘的答案。然而,所有的更改都尚未提交,我希望以最简单、最直接的方式完成 在最坏的情况下,我可能会分别记录每个更改,分别记录这些更改,然后放弃所有更改,创建单独的分支,并在单独的分支中进行每个更改。有没有一种更简单的方法可以使用一些gi

自上次提交以来,我对代码库进行了几个独立的、不相关的更改。理想情况下,每一个变更都应该进行到它自己的分支中,但这并没有发生。现在,我想将每个单独的更改移动到一个单独的分支中,以便在将来某个时候发布其中一个,并将其余的更改合并到第二个发布分支中

我看到了一个关于樱桃采摘的答案。然而,所有的更改都尚未提交,我希望以最简单、最直接的方式完成

在最坏的情况下,我可能会分别记录每个更改,分别记录这些更改,然后放弃所有更改,创建单独的分支,并在单独的分支中进行每个更改。有没有一种更简单的方法可以使用一些git命令呢?

您可以使用git stash。 -

通常,当您正在处理项目的一部分时,事情处于混乱状态,您希望切换分支一点,以便处理其他事情。问题是,你不想做一个半途而废的工作,只是为了以后能回到这一点。这个问题的答案是git stash命令

隐藏会获取工作目录的脏状态(即修改的跟踪文件和暂存更改),并将其保存在未完成更改的堆栈中,您可以随时重新应用这些更改

你所能做的就是隐藏,继续你的分支并隐藏你想要的更改,然后对于你想要这些更改的每个分支,只需使用
git stash apply
。如果使用
pop
,则会从隐藏中删除状态

要列出要保留的条目或零件等,请使用

  • git隐藏列表
    -列出您当前拥有的隐藏项。每个存储条目都列出了其名称(例如,存储{0}是最新条目,存储{1}是之前的条目,等等)
  • git stash drop
    -从存储项列表中删除单个存储项。如果给定“否”,则删除最新的一个。i、 e.藏匿{0}
  • 通过这些命令的结合,您完全可以在更精细的级别上操作所需的更改。您可以使用手册页或官方文档获取特定命令选项。此外,恢复错误清除/丢弃的隐藏项

    • 如果您错误地丢弃或清除隐藏条目,则无法通过正常的安全机制恢复它们
    隐藏项表示为提交,其树记录工作目录的状态,其第一个父项是创建该项时头部的提交。第二个父级的树记录创建条目时索引的状态,并将其作为头提交的子级。祖先图如下所示:

       .----W
      /    /
    -----H----I
    

    其中H是头提交,I是记录索引状态的提交,W是记录工作树状态的提交。

    ok,这样我可以保存自上次提交以来的所有更改,然后将更改应用于其他分支。我正在查看
    git stash apply
    ,但我不清楚如何选择要应用的更改部分。定义要选择的部分?对。。。我想实际创建三个独立的分支,每个分支保存自上次提交以来对代码库所做的单独修复/功能更改。重读上一段,你是说对每个分支应用全部更改,然后手动撤消我不希望在该分支中进行的更改?是的,我通常做的是创建一个测试分支将更改应用于该分支,将其隐藏并应用于其他分支,然后删除测试分支。在您的情况下,将其应用于三个分支,并手动解决和修复问题。确保最后一个应用程序是pop。您可以在这里找到答案:我真的不喜欢使用
    git stash
    。我在这里要做的是创建一个新的分支名称,比如
    combined
    和commit。你现在有了一个可以选择的承诺。返回到您想要处理的分支,运行
    git cherry pick-n combined
    以获得已提交的更改而不提交,然后
    git reset
    以取消未提交的更改;然后使用
    gitadd-p
    只进行部分更改,并提交该部分(然后
    gitreset--hard
    放弃其余部分)。对每个附加分支重复此操作。