git分支和提交 - 你能解释这个令人费解(对我而言)行为背后的理论吗?

Deo*_*omo 4 git git-branch

我有一个主分支,一切都很好.然后我创建了一个名为experimental的分支,我创建了一个新文件.在我的实验分支中,我使用git add命令添加此文件.然后我结账我的主分公司.在我的主分支中,我运行git status并发现该文件也已添加到我的主分支中.然后git commit -m "message"我在我的主分支中运行并且提交发生.然后我切换到我的实验分支并运行git status并发现该文件也已在我的实验分支中提交.

这是我所期望的:在添加新文件后切换到主分支时,我希望文件不会出现在那里.毕竟,我没有在master分支中创建文件,而且在master分支中我没有添加文件.所以,当我切换到主分支并运行git status为什么它找到已添加的文件并准备提交?当我在主分支中提交时,为什么我在切换回时会在实验分支中找到它?它是否同时承诺了两个分支?

Gre*_*ill 8

当你运行时git add,文件没有被提交,它只被添加到Git的"索引"中.您可能想在完成实验分支git commit后运行git add.

当您在Git中切换分支时,只要它们不与在分支交换期间更改的任何其他文件冲突,就会继承工作目录和索引中的更改.

为了解决您的具体问题:

...并发现此文件也已添加到我的主分支中.

如果尚未运行git commit,则该文件尚未添加到任何分支.