如何从当前状态恢复为在某个提交时创建的快照?
如果我这样做git log,那么我得到以下输出:
$ git log
commit a867b4af366350be2e7c21b8de9cc6504678a61b`
Author: Me <me@me.com>
Date: Thu Nov 4 18:59:41 2010 -0400
blah blah blah...
commit 25eee4caef46ae64aa08e8ab3f988bc917ee1ce4
Author: Me <me@me.com>
Date: Thu Nov 4 05:13:39 2010 -0400
more blah blah blah...
commit 0766c053c0ea2035e90f504928f8df3c9363b8bd
Author: Me <me@me.com>
Date: Thu Nov 4 00:55:06 2010 -0400
And yet more blah blah...
commit 0d1d7fc32e5a947fbd92ee598033d85bfc445a50
Author: Me <me@me.com>
Date: Wed Nov 3 23:56:08 2010 -0400
Yep, more blah blah.
Run Code Online (Sandbox Code Playgroud)
如何从11月3日恢复提交,即提交0d1d7fc?
我不小心在一个分支机构工作,我不应该有一段时间,所以我分支它给它适当的名称.现在我想要覆盖我不应该使用origin(github)版本的分支.是否有捷径可寻?我尝试删除分支然后重置跟踪分支,但它只是给了我我正在处理的版本.
我的情况:我克隆了一个存储库(内核的源文件)。然后检查一个分支,并构建内核。二进制文件已存储在工作树的子目录中。现在,我想放弃所有本地更改,包括构建的二进制文件,并恢复到克隆存储库的不同分支。
特别是,我认为这个答案很有用。在我看来,最好的方法是
git checkout -f <desired branch of the original cloned repository>
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,这应该强制结帐,丢弃本地更改(如果我错了,请纠正我)。Git 已成功签出,但我仍然在工作树的同一子文件夹中找到之前构建的二进制文件。
从git reset --hard HEAD留下未跟踪的文件:
当我跑步时
git reset --hard HEAD,它应该重置为你所拉的原始版本,据我所知.不幸的是,它留下了文件,git status显示了一个未跟踪文件的大列表.你怎么告诉git"只是把它带回到最后一次拉动中,没有更多,没有更少"?
要摆脱这些文件,我必须运行git clean -df.
有人可以解释为什么它以这种方式工作,哪些文件将成为未跟踪的?
所以情况是我克隆了一个来自Github的回购,我搞砸了尝试构建它,它添加了新文件并对repo中的现有文件进行了更改.我没有任何承诺,也从未上过任何东西.如何恢复克隆的干净主分支(意味着我PC上的实际本地文件)?
如果我没有使用git命令,我会从磁盘中删除本地文件,只需重新下载/克隆repo.但是我觉得使用Git应该有一个简单的方法来做到这一点.我从来没有弄乱我的Git设置,所以git status仍列出所有未跟踪文件并列出修改,但我不想逐个手动检出每个文件,然后逐个手动删除每个未跟踪文件.