将 master 分支中所有当前未提交的工作移至其他分支

Moving all current uncommitted work in master branch to some other branch instead

我是 Git 的新手,正在学习如何将其用于我的项目。目前,我想知道当我不小心在 master 工作时如何将未提交的工作切换到分支。我自己一个人工作,但无论如何都想让事情井井有条。

例如,我进行了一系列提交并且 master 是最新的。然后我开始在 master 分支上工作,但决定工作会比预期的更复杂,所以我更愿意在其他分支上做。

我当然可以将之前的更改提交到 master,然后从那里开始在一个新分支中,但我宁愿拥有自上次提交以来我一直在做的所有事情分支。这样做的简单方法是什么?

在这种情况下是否需要 git reset --soft?或者有更简单的方法吗?谢谢

我看到三种情况:

  1. 你想在 master 上的 las 提交创建的新分支上继续:

    git checkout -b name-of-new-branch
    

    然后你可以在新的分支中提交

  2. 您想在现有分支 (that-branch) 上继续,并且当前 WIP 未触及 that-branchmaster 中不同的文件(别担心,如果是这样,git 会投诉的):

    git checkout that-branch
    

    如果结帐有效,您可以提交

  3. 某些文件在 that-branchmaster 中不同(git 在您尝试 2 时抱怨。:

    git stash
    git checkout that-branch
    git stash apply
    

可能存在您必须解决的冲突。如果你不能(合并可能很难),不要感到不知所措,git reset HEAD --hard。存储仍会在这里,您可以返回 master 并执行第 1 步,然后再尝试以传统方式合并。

你也可以git stash pop,但我总是强调如果失败我会失去工作。