为什么没有git checkout(过去的提交)改变我的文件?

时间:2014-05-05 17:58:10

标签: git branch commit git-checkout

我一直用git存储库构建我的网站一周。到目前为止,我还没有创建任何分支,但我刚发现我的实时网站上存在需要修复的问题。目前,我提交的内容超出了包含我网站的提交,因为我上次将它从我的开发环境推送到上周。所以这就是我所做的:

  • 我做了git checkout -b feature1来创建一个名为'feature1'的新分支
  • 我提交了所有当前文件。
  • 我做git log找到与最后一次实时推送/更新相对应的提交的哈希号(afd6)。
  • 我做了git checkout afd6

此时我希望我的工作空间只包含我上周提交的文件和修订版。但是,我的工作仍包含今天的所有文件和变体。我在这里错过了一步吗?我假设此操作应该删除了早期提交中不存在的所有跟踪文件,并还原了今天更改的所有文件。

编辑========================

我刚做git clean -f -d但没有改变

编辑=======================

git status说:

HEAD在afd620b分离 无需提交,工作目录清理

编辑=========================

实际上,我假设文件没有改变是错误的,因为我查看了每个文件的更改日期。我希望这些数据在结账后改为“上周”。在关闭检查后,我看到文件确实包含上周的代码,即使修改数据仍然显示“今天”。有人可以验证操作系统是否认为git checkout是文件修改?

1 个答案:

答案 0 :(得分:2)

来自Git FAQ

  

“Git将当前时间设置为它修改的每个文件的时间戳,   但只有那些。“

所以你看到的正是那些返回到先前状态的文件(基于你提供的提交)具有'now'时间戳。这样做的Git允许构建工具识别已更改的文件 - 刚刚结账时更改的文件。