1

所以情况是我从 Github 克隆了一个 repo,我在尝试构建它时搞砸了,它添加了新文件并对 repo 中的现有文件进行了更改。我没有提交,也从未上演过任何事情。如何恢复到克隆的干净主分支(意味着我的 PC 上的实际本地文件)?

如果我不使用 git 命令,我会从磁盘中删除本地文件,然后重新下载/克隆 repo。但是我觉得应该有一种使用 Git 的简单方法来做到这一点。我从来没有弄乱我的 Git 设置,所以 git status 仍然会列出所有未跟踪的文件并列出修改,但我不想手动逐个检查每个文件,然后手动删除每个未跟踪的文件。

4

4 回答 4

5
git reset --hard # This resets all tracked files to default state
git clean -fd    # this clears working directory of all untracked files

这可能很明显,但请谨慎使用此命令。它们具有破坏性,并且会在不询问的情况下删除您的工作。

git reset将当前 HEAD 重置为默认状态。指定硬--hard模式,删除所有更改。您还可以将它与--soft mode 一起使用,它只是将其他所有内容重置为指定的提交,但保留所有更改,以及--mixedmode,它使您的所有更改都未暂存。但是,此命令仅适用于跟踪的文件。

git clean清理未跟踪文件的文件夹。-d选项使它可以在目录和文件上工作(请注意,git 只跟踪文件 - 它不会注意到文件夹存在,除非你在其中放入一些东西),并且-f 选项是一个简单的保险丝 - 没有它它不会工作(除非你的repo 以其他方式配置)。但是,此命令仍会忽略 .gitignore 中指定的文件,除非您添加-x标志。

于 2013-11-01T21:19:48.227 回答
0
git reset --hard HEAD

HEAD-> 指的是您开始进行更改之前的提交(正如西蒙在评论中指出的那样,这是最后一次签出的提交)。

reset --hard-> 更改工作目录中的文件以匹配该提交,忽略当前存在的任何更改

您还可以通过reset --hard以下方式移动到不同的提交、标签或分支git reset --hard branch-name

于 2013-11-01T21:17:06.177 回答
0

很简单:git reset --hard

您可能需要手动删除添加的文件。

于 2013-11-01T21:17:13.767 回答
0

删除所有本地更改

git checkout -- .

如果您添加了要删除的文件

git clean

我建议使用 githug 开始学习 git,它让学习更像是一场游戏

https://github.com/Gazler/githug

于 2013-11-01T21:17:38.947 回答