如何使用git撤消挂起的更改?

如何使用git撤消挂起的更改?,git,version-control,Git,Version Control,我是git的新手。我对TFS和SourceGear Vault等集中式CVS有丰富的经验 我在本地使用git(没有远程设备)。今天,当我试图恢复自上次提交以来所做的所有更改时,我把我的项目弄得一团糟 我的存储库存储文档、VS项目和一些其他开发工件。总共有几千个文件 如何使用git恢复到整个存储库的上一次提交(撤消挂起的更改和TFS)? git reset和git checkout刚刚弄乱了我的文件,所以我不得不使用文件级备份 撤消更改是指: 还原自上次提交以来编辑的文件 添加自上次提交后删除的

我是git的新手。我对TFS和SourceGear Vault等集中式CVS有丰富的经验

我在本地使用git(没有远程设备)。今天,当我试图恢复自上次提交以来所做的所有更改时,我把我的项目弄得一团糟

我的存储库存储文档、VS项目和一些其他开发工件。总共有几千个文件

如何使用git恢复到整个存储库的上一次提交(撤消挂起的更改和TFS)?
git reset
git checkout
刚刚弄乱了我的文件,所以我不得不使用文件级备份

撤消更改是指:

  • 还原自上次提交以来编辑的文件
  • 添加自上次提交后删除的文件
  • 删除自上次提交后添加的文件
.gitignore文件中列出的项目不应受到影响

是否可以在文件夹(+子文件夹)级别而不是存储库级别执行此恢复

使用Vault,我可以标记文件夹(+子文件夹),稍后我可以返回到该标记状态。这可以用git完成吗

还有一个简单的问题——我是否可以查看文件夹中已删除的文件,并根据需要(从一些较旧的提交中)还原它们?我还没有用
git state
git log
做到这一点

git reset --hard HEAD
我们应该做到这一点。此命令会将所有文件重置为上次提交时的状态

如何使用git恢复到整个存储库的上一次提交(撤消挂起的更改和TFS)?git重置和git签出只是弄乱了我的文件,所以我不得不使用我的文件级备份

另一种选择是
git签出
,请参阅:git签出-切换分支或恢复工作树文件。例如:
git checkout--.
从当前分支签出所有文件,从而恢复其状态

是否可以在文件夹(+子文件夹)级别而不是存储库级别执行此恢复

是,
git签出--path/to/folder

使用Vault,我可以标记文件夹(+子文件夹),稍后我可以返回到该标记状态。这可以用git完成吗

我只知道在存储库的基础上。但是,您可以为该特定标记签出文件夹(或提交):
git checkout tags/v1.0.3--path
git checkout commit--path

我是否可以查看文件夹中已删除的文件,并根据需要(从一些较旧的提交中)还原它们?我还没有用git state或git log做到这一点

例如,使用git log--name status。假设我在某个提交中删除了README.md,它将显示为
D README.md
。假设它在commit abc123中被删除,那么abc123~1就是之前的commit(README.md仍然存在)。然后,您可以使用git show abc123~1:README.md查看删除前提交中该文件的内容。一种简单的恢复方法:
git show 5235de78d28a07d2459130e7e3041b7720563b5d~1:README.md>README.md

我可以查看文件夹中已删除的文件吗


git log——name status——path/to/folder

这是我首先做的<代码>git日志然后
git重置--硬2f34…
其中2f34。。。这是上次犯罪的结果。它只是为整个回购协议恢复了一些非常旧的数据。我只是需要一个文件夹。谢谢你的详细回答。