Git:在没有提交的情况下创建新分支时,对主更改的更改也会分支

Bre*_*ean 0 git

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

git init

git add *

git commit -m 'Initial commit'
Run Code Online (Sandbox Code Playgroud)

然后创建一个新分支:

git checkout -b new_branch
Run Code Online (Sandbox Code Playgroud)

回到主人:

git checkout master
Run Code Online (Sandbox Code Playgroud)

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

git checkout new_branch
Run Code Online (Sandbox Code Playgroud)

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

(PS:我不是要求如何创建一个新分支或如何使用分支保存我的工作,我只是对这种特定环境中的gits行为感到困惑,并希望更好地理解其逻辑)

Myk*_*rov 7

因为您的更改位于工作目录/暂存区域中,所以它们不会被提交.当你检查其他东西时,除非在结账时将中止冲突,否则它们将被结转.很方便.


Kev*_*ert 6

Git足够聪明,不会丢掉无条件的变化.只要没有冲突,它就会将增量移动到您更改的任何分支.如果你不小心开始在错误的分支上进行更改,这很方便.