1

我有一个带有 Linked List 实现的文件夹,它现在只适用于整数。我已经对其进行了测试,并且效果很好。现在我的老板告诉我,我需要更新我的实现,以便它现在可以使用任何数据类型。

在继续编辑我的代码之前,我创建了一个名为 _test_templates 的新 git 分支,使用 git checkout 切换到这个新分支,然后开始试验。一段时间后,我意识到我的代码不起作用,我想我会从头开始。我切换回 Master,并删除了我的 _test_templates 分支。

让我感到困惑的是,我的 _templates_test 分支中对 Node.h、Node.cpp、LinkedList.h、LinkedList.cpp 和 main.cpp 所做的更改也存在于 master 分支中。

为什么?我不是在一个全新的临时空间工作,称为独立于 master 的分支吗?

我没有在本地或远程提交新分支上的更改。

4

2 回答 2

4

git branch将为提交(种类)创建一个新位置,并为添加文件创建一个新索引。但是,即使文件本身被跟踪,对工作目录中文件的更改也不属于分支。当您再次签出您的master分支时,您保留了尚未从您的_test_templates分支提交的工作更改。

从安全的角度来看,这是有道理的 - 更改没有提交,因此如果在您更改分支时它们被丢弃,git 将无法恢复它们。它们可以自动隐藏,但这不是非常用户友好。因此,更改只是简单地保存在本地。

于 2013-09-15T03:01:50.143 回答
0

运行git reset --hard以丢弃任何未提交的更改。

于 2013-09-15T03:13:50.910 回答