我该如何在git中恢复-aC?

我该如何在git中恢复-aC?

问题描述:

使用Mercurial的hg revert -aC或长选项名称,hg revert --all --no-backup我可以重置我的工作副本。我该如何在git中恢复-aC?

I.E.,我曾经分支,它会更新工作副本,作为本地回购包含的该分支上的最新提交。

特别

  • 如果我犯我的本地库,它绝对不会抛弃这些提交。
  • 它将删除未被忽略的未被忽略的文件。
  • 它将只留下被忽略的文件。

我发现这是使用回购协议时最基本的基本命令之一。我经常会对一些文件做一些探索性的修改,然后想放弃这一点,以便从原始集合开始真正的工作。

我该怎么做,这git


这被记录为How do I use 'git reset --hard HEAD' to revert to a previous commit?的副本。这个问题(以及它所链接的问题)的答案是回答这个问题的有用资源。但是,这个问题特别要求一个mercurial用户如何使用git来实现其部分工作流程。

+1

可能重复[如何使用'git reset --hard HEAD'恢复到以前的提交?](http://stackoverflow.com/questions/9529078/how-do-i-use-git-重置难题返回到先前提交) –

+0

@TimCastelijns谢谢 - 我来看看。我不认为这是重复的:我非常想从一个寻找git等价物的mercurial用户的角度来问这个问题,而不是一个查询命令确切用法的git用户。我怀疑,如何在现有的SO答案中实现这种特定效果,几乎可以肯定是一个很好的描述。这个问题的一个很好的答案可能只是一个简单的和现有答案的链接。 – Benjohn

+0

嗨@TimCastelijns谢谢,我相信我的问题与链接的不同 - 尽管从那里的链接带我到[答案](http://stackoverflow.com/a/12049323/2547229),这将很好地工作问题,所以我想我可以自己回答。我不认为我可以编辑这个问题,使它更清楚地表明这不是重复的:-)如果你有建议,我一定会考虑它们! – Benjohn

要重置你的工作拷贝头:

git reset --hard HEAD 

要删除未跟踪文件,但不能忽略的文件:

git clean -f 

警告:这些命令将永久性地恢复所有未提交的更改和删除所有未跟踪的文件!

但是,以这种方式使用它们将保留您尚未推送的任何本地提交。

+0

谢谢!你能澄清两件事:1.这些(永远)中的任何一个都会删除我所做的目前只有本地的提交。 2.这些删除*忽略*文件吗?我绝对想保留忽略的文件。 – Benjohn

+1

@ Benjohn 1.否。本地提交不会被删除。 2.否。*忽略*文件不会被删除。你可以使用'git clean -n'来看看会做什么。 – sergej

+0

我会编辑以包含该信息,如果这对您没有问题? – Benjohn