Git不会删除我还原到的提交后创建的文件

时间:2013-07-24 09:32:44

标签: git git-revert

我有一个rails项目,我做了以下步骤:

  1. git commit -m "Format gemfile"git push确保一切都干净。此提交的ID为b24d101

  2. git checkout -b newbranch

  3. 在新分支上,我删除了一个文件,对其他2个文件进行了更改,并生成了其他几个文件。

  4. git status我修改了2个文件,删除了1个文件,未删除了几个文件。到目前为止一切顺利。

  5. 我发现了一个问题,所以我通过git checkout master移回了主分支,并通过git branch -d newbranch删除了新分支。

  6. git status仍然显示有几个未跟踪的文件。

  7. 我决定恢复上一次提交。

  8. git reset --hard b24d101

  9. git status现在显示没有文件被删除或修改(实际上我可以在手动检查后确认这一点,步骤3中删除的文件就在那里,对第3步中的2个文件进行了编辑消失了)。但是我仍然有这几个未跟踪的文件。我不想要他们。是不是git应该删除这些文件,因为它们是创建的:a)在一个新的分支上,它不再存在并且在删除之前没有合并,以及b)在提交之后我还原为?

  10. P.S。我想手动"clean"这些文件吗?

2 个答案:

答案 0 :(得分:1)

您在步骤3中生成的文件从未提交过,因此git不会跟踪它们。 Git从不接触未跟踪的文件,这就是为什么它让他们删除分支。因此,“它们是在新分支上创建的”并不重要,因为您在分支机构时没有添加或跟踪它们。

但是,如果你已经提交了它们,那么一旦你切换回master分支就会被正确删除。

答案 1 :(得分:1)

我认为这是“P.S.”的答案。问题是肯定的。 只要新文件没有暂存或提交,它们就不属于任何分支,git完全忽略它们,如果你想删除它们,你必须手动完成。

此致 UDI