【发布时间】:2019-12-21 07:23:41
【问题描述】:
我只是在一个项目中尝试了一些东西,并想删除一些我正在使用但不再需要的修改过的文件。
我不小心输入了git checkout file 而不是git checkout -- file。所以基本上我只是检查了这个修改过的文件,我不知道修改过的文件去了哪里。
我尝试使用git update-index --fresh 只是想看看这个修改后的文件可能去了哪里,但它似乎最终被删除了?
modified: test/ssc_test/cmod_tcsdirect_steam_test.cpp
modified: test/ssc_test/cmod_tcsfresnel_molten_salt_test.cpp
modified: test/ssc_test/cmod_tcsmolten_salt_test.cpp
这些是我试图删除但忘记添加 -- 以删除其中一个已编辑文件的文件。
签出此文件后,它没有删除它,而是给了我一条消息,Updated 1 path from the index,并且在使用 git status 时,它不再与其他修改的文件一起显示。
我对到底发生了什么一无所知。它是被删除或隐藏在索引中的某个地方,还是其他什么地方?
【问题讨论】:
-
你克隆了其他分支吗?
-
git checkout X,对于前面没有--的任何X,首先尝试将X视为分支名称。如果可行,您只需签出该分支(git status会告诉您您现在是on branch X)。如果这不起作用,Git 会尝试将X视为提交哈希ID:git rev-parse X^{commit}是否成功?如果是这样,您检查了该提交,git status会说“分离的 HEAD”。如果不是,最后的手段是像运行git checkout -- X一样:尝试将X作为文件名。所以你可能做了和git checkout -- file一样的事情。 -
请注意,
git status不会列出文件,如果它现在在索引中并且与@987654340 中的副本相同 @commit 和与工作树中的副本相同。这就是git checkout -- X使文件X退出git status列表的时间和原因:Git 将工作树X替换为X的索引版本,并且如果X的索引版本匹配HEAD版本的X,现在所有三个副本都匹配。 -
你为什么一直在谈论“删除”?结帐不会删除任何内容。
标签: git git-bash git-checkout