【问题标题】:git - make a 'fresh' feature branch while preserving current feature branch?git - 在保留当前功能分支的同时创建一个“新”功能分支?
【发布时间】:2013-05-20 23:19:02
【问题描述】:

关于 git。

我有一个功能分支,我们将调用 foo。其中有许多已提交的更改和一些未提交的更改来实现一个功能。

我做了一个错误的假设,foo 中的很多内容不再可取。

我想创建一个新功能分支bar,而不对foo 应用任何更改,并手动将有用的位从foo 重新实现为bar

一旦bar 好,我将删除foo 分支。

如何在没有 foo 中的任何内容(重新开始)的情况下创建新功能分支,同时保留 foo 中的内容以便我可以根据需要对其进行审查?

【问题讨论】:

    标签: git branch git-branch branching-and-merging


    【解决方案1】:

    我认为您可以切换到 master 并再次从那里分支。

    git checkout master
    git checkout -b bar
    

    不过,您必须先提交所有未提交的更改。
    (你可以隐藏,但我认为在这种情况下这不是一个好主意)。

    【讨论】:

    • 谢谢。我刚刚解决了这个问题,但你解释得比我好。一旦我能够(目前有某种时间限制),我会接受答案。再次感谢。
    【解决方案2】:
    git checkout -b bar <commit>
    

    &lt;commit&gt; 是您要从中分支的提交。要找到该提交,您可以使用以下命令自己检查历史图表:

    git log --decorate --graph --pretty=oneline --abbrev-commit
    

    以编程方式查找该提交(假设您从 master 分支):

    git merge-base foo master
    

    【讨论】:

    • 好的!这比我现在需要的要多,但非常有用的信息 - 谢谢。
    • 请注意,--pretty=oneline --abbrev-commit--oneline 相同。
    【解决方案3】:

    好的,回答我自己的问题。我出错的地方是,在创建新分支时我仍在功能分支中,所以我选择了foo 的当前状态。

    通过提交foo 中的所有内容,然后签出master,我能够创建bar 并重新开始。

    【讨论】:

      猜你喜欢
      • 2017-07-04
      • 1970-01-01
      • 2018-03-24
      • 1970-01-01
      • 2014-07-01
      • 2021-01-12
      • 1970-01-01
      • 2020-12-15
      • 2013-01-31
      相关资源
      最近更新 更多