将现有未提交的更改移动到 Git 中的新分支

本文讨论将未提交的更改移动到新分支的过程。

您可能正在处理您的 master 分支,并意识到您必须创建一个新分支并移动未提交的更改。 如果您处于类似情况,请留下来。


将现有未提交的更改移动到新分支

以这个假设场景为例:您正在 master 分支上工作,并意识到您的代码需要测试才能提交给 master

您必须创建一个新分支,移动未提交的更改并重置您的主分支。 你怎么看这个?

有两种方法可以做到这一点。

  1. 使用 git checkout 命令或 git switch 命令。
  2. 使用 git stash 命令。

git checkout 和 git switch 命令

如果您已经使用 Git 多年,您可能知道 git checkout 命令有多种用途。 你知道我们可以使用 git checkout 命令来创建和切换到一个新的分支。

假设我们在 master 分支上,我们的工作空间如下所示:

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to ...)
  (use "git checkout -- <file>..." to ...)
        modified:   LICENSE.md
        modified:   README.md
Untracked files:
  (use "git add <file>..." to include...)
        scripts.txt
no changes added to commit (use..)

我们如何将这些更改移动到新分支?

要将更改移动到新分支,例如,新开发分支,我们将运行:

$ git checkout -b development

或者,我们可以使用 git switch 命令,如下所示。

$ git switch -c development

这两个命令都将创建一个开发分支并将我们未提交的更改移动到新分支。 下面是我们在开发分支上的工作目录。

将现有未提交的更改移动到 Git 中的新分支

然后我们可以将文件添加到索引并提交。

如果我们切换回 master 分支并运行 git status 命令,我们将看到我们的工作树是干净的。

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean
the git stash Command

我们可以使用 git stash 命令将更改移动到新分支。 这会将未提交的更改存储在补丁文件中。

$ git stash

然后您可以创建一个新分支,您将在其中存储未提交的更改。 使用 git checkout 命令创建并切换到新分支,如下图。

$ git checkout -b <new branch>

弹出存储以在新创建的分支的工作空间中应用未提交的更改。 使用 git stash pop 或 git stash apply 命令。

$ git stash pop

您可能会遇到合并冲突,您必须根据自己的喜好手动解决这些冲突。 如果您对更改感到满意,请继续提交。

简而言之,要将未提交的更改从一个分支移动到另一个分支,您有两种选择。 您可以使用 git stash 命令或常规的 git switch 和 git checkout 命令。