Git分支 vs 提交

3

我有一个主分支,我在那里提交了最后一个更改,然后运行了以下命令:

git branch test
git checkout test

我删除了项目文件夹中的文件README 然后我运行了
git checkout master

现在已经没有README文件了。

我原以为创建一个新分支就像创建一个新的提交。我做错了什么?


你在 test 分支上真的提交了吗?因为如果你没有提交,当你回到 master 分支时,你的更改将会丢失。 - Ariel
不,我没有在测试上提交,更改是为了删除 README,当我回到主分支时,README 仍然不存在。 - John Smith
“checkout test” 意味着您从未更改分支。“git checkout test”? - learnvst
是的,git checkout test... - John Smith
elcanibal - 在提交之前切换到不同的分支不会丢失更改,请测试它。 - John Smith
不用理会我之前的评论,实际上情况比那更复杂。 - John Smith
1个回答

4

创建分支不同于创建新的提交。创建分支类似于创建一个易于阅读的提交哈希引用。

因此,通过位于 master 分支并执行以下操作:

git branch test
git checkout test
rm README
git checkout master

由于您没有对test进行任何操作,所以您仍然在master分支上有未暂存的更改。

如果您执行git status,应该会显示README丢失。

您可以通过执行git checkout README来恢复它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接