gpt4 book ai didi

git - 为什么 `git reset --hard HEAD~X` 会留下未跟踪的文件?

转载 作者:太空狗 更新时间:2023-10-29 14:29:00 26 4
gpt4 key购买 nike

来自 git reset --hard HEAD leaves untracked files behind :

When I run git reset --hard HEAD, it's supposed to reset to a pristine version of what you pulled, as I understand it. Unfortunately, it leaves files lying around, as a git status shows a big list of untracked files.

How do you tell git "Just bring it back to EXACTLY what was in the last pull, nothing more, nothing less"?

要删除这些文件,我必须运行 git clean -df

有人可以解释为什么它以这种方式工作以及哪些文件将变得无法跟踪吗?

最佳答案

根据评论中的注释更新

最后一个问题在先:

which files will become untracked?

没有。但是已经未跟踪的文件应该保持未跟踪状态并且不会受到影响。这与大多数 git 命令的行为一致(除了那些明确影响未跟踪文件的命令)。

不过,我说应该保持未跟踪状态,因为有一种情况甚至不是这样:如果您要重置的提交在与当前未跟踪文件相同的路径下有一个文件,然后工作树版本被不可逆转地破坏。这是非常不符合 git 的行为,IMO 是一个错误,但它确实存在。

Can somebody please explain why it works this way[?]

因为如果 git 隐式删除或修改未跟踪的文件,您将无法恢复该文件在 git 搞砸之前的样子。如果您希望该文件在 git 的控制下,git 会假定您已经添加并可能提交了它。因为你没有(文件未被跟踪),git 通常不会弄乱它,除非你清楚地告诉它应该这样做。

那么回到最初问题的前提:

When I run git reset --hard HEAD, it's supposed to reset to a pristine version of what you pulled, as I understand it

没有。文档清楚地表明只有跟踪状态被还原。

关于git - 为什么 `git reset --hard HEAD~X` 会留下未跟踪的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46300977/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com