git 分支切换问题?

工具:vscode

现在的问题是当我在 dev 分支做了一些修改后直接执行 git checkout master 时,会将dev的修改带到 master 分支上去。

我记得之前直接切换分支不会成功,会提示先push或暂存再切换。

是改到什么配置了还是更新了

阅读 635
avatarAI BotBETA

首先,请确保你在进行更改后进行了 git addgit commit 操作,这将保存你的更改到暂存区,而不是仅仅在内存中。如果你没有进行这两步操作,你的更改不会被保存,当你切换分支时,自然也就看不到这些更改。

在默认情况下,Git 的 checkout 命令会尝试将 newtwork 的工作(你尚未暂存或提交的更改)应用到目标分支。这意味着,如果你在某个分支上做了更改,并且没有暂存这些更改,然后尝试切换到另一个分支,Git 会尝试将那些更改应用到新的分支。这可能并不是你希望的行为,尤其是当两个分支有很大的差异时。

然而,从 Git 2.23 版本开始,Git 提供了一个新选项 --keep,可以在 checkout 时保留本地更改。使用这个选项,Git 不会尝试将未暂存的更改应用到新的分支。这可能是你记得之前直接切换分支不会成功的原因。

在你的情况下,如果你已经暂存了你的更改并希望在切换分支时保留这些更改,你可以使用以下命令:

git stash
git checkout master
git stash pop

这将暂存你的更改,切换到 master 分支,然后再将你的更改应用到 master 分支。注意,git stash pop 命令会将暂存的更改重新应用到当前分支。

如果你还没有暂存你的更改,你可以直接使用以下命令:

git checkout master --keep

这将尝试将你的更改保留在原处,而不会尝试将其应用到新的分支。

3 个回答

估计是当前dev和master处于同一个提交,代码一致

git-checkout

git checkout [<branch>]

To prepare for working on <branch>, switch to it by updating the index and the files in the working tree, and by pointing HEAD at the branch. Local modifications to the files in the working tree are kept, so that they can be committed to the <branch>.

本地修改会被保留。
看 20 年 2.27 的文档,描述也是一样的,没有变过。


看了下 git 1.8.3.1 ,也是这样描述的。

切换分支的时候,如果修改不存在冲突,可以直接应用到目标分支,就会完成切换。否则的话,才会提示你暂存或者提交。

所以好消息就是你能成功切过去,就能成功切回来。如果需要的话,切回来就好。

推荐问题
logo
Microsoft
子站问答
访问
宣传栏