菜鸟笔记
提升您的技术认知

git 切换分支不携带上一个分支的改动

在使用 Git 进行版本控制时,有时候你可能想切换到一个新分支而不携带当前分支的未提交改动。下面是一些方法来实现这一点。

方法 1: 使用 git stash
git stash 命令可以临时保存当前工作目录中的未提交改动。你可以在切换分支前使用 git stash,然后在需要的时候再恢复这些改动。

保存当前未提交的改动:

git stash

切换到新分支:

git checkout new-branch

恢复未提交的改动(可选):
如果你想在原来的分支上恢复未提交的改动,可以切换回去并使用 git stash pop:

git checkout previous-branch
git stash pop

方法 2: 使用 git checkout 的 -m 选项
如果你确实想在切换分支时丢弃当前的未提交改动,可以使用 git checkout 的 -m 选项。

git checkout -m new-branch

该命令会丢弃当前工作目录中的改动并切换到 new-branch 分支。

方法 3: 确保工作目录干净
在切换分支之前,确保工作目录没有未提交的改动。这可以通过提交你的改动或将其存放到暂存区来实现。

提交改动:

git add .
git commit -m "Save work in progress"

切换到新分支:

git checkout new-branch

方法 4: 创建新的工作树
如果你需要同时在多个分支上工作,可以使用 git worktree 来创建一个新的工作树。这样可以在不同目录中同时处理多个分支。

创建新工作树:

git worktree add ../new-branch-directory new-branch

切换到新工作树目录:

cd ../new-branch-directory

这将创建一个新的目录并在其中检出 new-branch 分支。你可以在不同的目录中独立地工作,而不会相互影响。

总结
- 使用 git stash 来临时保存未提交的改动。
- 使用 git checkout -m 来丢弃未提交的改动并切换分支。
- 确保工作目录干净,通过提交改动来避免携带未提交的改动。
- 使用 git worktree 来在不同目录中同时处理多个分支。