gpt4 book ai didi

Git 允许我在不提交更改的情况下切换分支

转载 作者:IT王子 更新时间:2023-10-29 01:05:30 28 4
gpt4 key购买 nike

我刚刚学习 Git,正在学习教程。我在分支 seo_title 中,我对文件 mission.html 有未提交的更改。我执行了 git checkout master 期望得到关于 Changes not staged for commit、no changes added 等的警告,然而它继续并切换分支并显示消息:

M       mission.html
Switched to branch 'master'

然后,当我执行 git diff mission.html 时,它显示工作目录仍然包含我在 check out 另一个分支时所做的更改。我错过了什么?对于它的值(value),我在 Windows 上使用 Git Bash。

编辑:对 mission.html 的更改也没有添加到暂存索引中。

编辑 2:我认为投票最高的答案是正确的,但经过进一步调查,它与我看到的行为不符。这是对我正在做的事情的更完整描述:

top_directory(master) > git branch new_branch_1
top_directory(master) > git branch new_branch_2
top_directory(master) > git checkout new_branch_1

(打开notepad++修改resources.html,保存)

top_directory(master) > git status
# On branch new_branch_1
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed
# (use "git checkout -- <file>..." to discard changes in wo
#
# modified: resources.html
#
no changes added to commit (use "git add" and/or "git commit
top_directory(new_branch_1) > git checkout new_branch_2

这是我希望 git 反对并告诉我 stash 或提交的地方,因为 new_branch_1 和 new_branch_2 有不同版本的 resources.html,但它只是在没有警告的情况下切换到新分支,并且它带来了未提交的更改:

M       resources.html
Switched to branch 'new_branch_2'
top_directory(new_branch_2) > git status
# On branch new_branch_2
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: resources.html
#
no changes added to commit (use "git add" and/or "git commit -a")

是否有一种模式或设置可以使它以这种方式而不是发出警告?还是我仍然误解了这个场景?

编辑 3:我现在明白了。评分最高的答案是正确的,请参阅我对该答案的最后评论。

最佳答案

您在上次尝试使用本地更改切换分支时看到的不同行为现在是由于不同的文件更改。

所以,假设我们有一个名为“自述文件”的分支,您在其中提交了对文件的一些更改,比方说 README.md。

现在,你已经切换回 master 了。您在其他文件(不是 README.md)上做一些工作。现在您有了本地更改。如果您尝试在不提交更改的情况下切换回“自述文件”分支,它会让您。为什么?因为切换到“自述文件”分支不会覆盖您的任何本地更改。

但是,如果您对 master 分支上的 README.md 文件进行了修改,那么当您尝试执行

git checkout readme 

你会遇到

error: Your local changes to the following files would be overwritten by checkout: README.md
Please, commit your changes or stash them before you can switch branches.

因为您对 README.md 进行了更改,需要 merge 。

关于Git 允许我在不提交更改的情况下切换分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16113240/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com