繁体   English   中英

Git:当创建没有提交的新分支时,对master的更改也会更改分支

[英]Git: When creating a new branch without commit, changes to master changes branch too

假设我有一个带有文本文件的全新项目。 我跑:

git init

git add *

git commit -m 'Initial commit'

然后创建一个新分支:

git checkout -b new_branch

回到主站:

git checkout master

如果现在更改文本文件,然后在不提交的情况下运行:

git checkout new_branch

new_branch的文件也已更改! 为什么是这样? 他们都指向相同的提交(相同的哈希),但是仍然感觉与直觉相反,即master更改也会更改new_branch 当我期望new_branch与创建它时相同时,我对git的理解是否存在缺陷?

(PS:我不是在问如何创建一个新分支或如何使用一个分支来保存我的工作,我只是对这种特定情况下的gits行为感到困惑,并想更好地了解其逻辑)

由于您的更改位于工作目录/临时区域中,因此不会提交。 并且当您签出其他内容时,除非结账时中止冲突,否则它们将被结转。 很方便。

Git很聪明,不会丢弃未提交的更改。 只要没有冲突,它将把增量移动到您更改到的任何分支。 如果您不小心开始在错误的分支上进行更改,这将很方便。

仍然感觉与直觉相反,对master的更改也会更改new_branch

您只更改了工作树中的文件,尚未更改master 您在git commit时更改存储库中的数据。

让我们看一下文档中的内容

git checkout <branch>

要准备在<branch>上工作,请通过更新工作树中的索引和文件,并将HEAD指向分支来切换到该分支。 保留对工作树中文件的本地修改,以便可以将它们提交到<branch>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM