2

git reset --hard HEAD恢复对工作树中的文件所做的任何更改,以便它们匹配头。但是,它不会触及未跟踪的文件。 git clean -df删除所有未跟踪的本地文件和目录。

是否有一种简单的方法可以使跟踪的文件与 HEAD 匹配,并且还可以删除在所有情况下都有效的未跟踪文件?

(您不能一个接一个地运行这两个命令,因为git reset --hard HEAD如果存储库没有提交,则会失败。可能有一些方法可以检查是否reset有必要,但我想这很繁琐。)

我认为这是一个等效的问题:如何使我的工作树与git clone存储库的新鲜结果相同[*]?

[*] 我很高兴忽略的文件不受影响。

4

1 回答 1

1

没有单一的命令,但可以像你提到的那样使用:

git reset --hard HEAD && git clean -fdx

陆续。这可能不适用于空存储库,但空存储库并不是 git 中的一等公民(即克隆空存储库会产生警告)。

如果您必须对空存储库进行这项工作,只需翻转命令:

git clean -fdx && git reset --hard HEAD

clean应该在任何情况下运行,并且reset可以失败而没有后果。

于 2013-01-08T17:11:06.080 回答