【问题标题】:Switching current work in master branch to a new branch (in git)将 master 分支中的当前工作切换到新分支(在 git 中)
【发布时间】:2015-01-21 02:58:17
【问题描述】:

我刚刚发现我犯了一个大错误。我在master 分支中进行了几天的更改,而我原本打算在feature-x 分支中进行更改。

如何将当前分支(master)中的所有更改切换到feature-x 分支?
我还想让master 分支处于干净状态。 (当我在 master 上执行 git status 时,它应该不会显示任何更改,但是当我在 feature-x 上执行 git status 时,它应该会显示我到目前为止所做的所有更改。

【问题讨论】:

    标签: git branch


    【解决方案1】:

    你可以

    这假设所有您在master 上的最后一次提交都是针对feature-x
    如果这些提交与一些主提交混合在一起,正如hoppjerkathe comments 中建议的那样,您将使用交互式变基:

    git checkout master
    git rebase -i {master@"3 days ago"}'
    

    你会把你不想要的放在master上。


    我不得不说我还没有承诺。当前在 master 中的所有更改都显示在 git status 中。所以我只需要移动更改

    然后

    git stash
    git checkout feature-x
    git stash pop
    

    【讨论】:

    • 如果您只想从 master 中删除一些提交,您可以执行 'git rebase -i {master@"3 days ago"}' 并删除您已移至 feature-x 的提交。
    • @bodacydo 您从未添加或提交过这些更改。试试 git reflog 看看那里是否仍然可以访问存储。
    • @bodacydo git stash apply 之前由 git stash pop 显示的 SHA1
    • @bodacydo 给你!我仍然建议您进行提交(甚至是中间提交)或某种备份;)
    • @bodacydo 我认为 checkout -f 是删除本地更改的那个。但是本地更改与您的工作树相关联,而不是与分支相关联。它们是被添加到索引中的候选者,然后准备下一次提交。我建议遵循快速教程try.github.io/levels/1/challenges/1 以更好地理解 git。
    猜你喜欢
    • 2011-11-01
    • 1970-01-01
    • 2011-02-15
    • 2013-12-09
    • 2011-11-03
    • 2016-07-24
    • 2011-05-26
    相关资源
    最近更新 更多