构建功能时,我总是创建一个新分支。这次我这样做了,并将我的工作委托给了新分支。但是,我注意到以某种方式删除了文件,并且该文件也已提交。因此,现在我的功能分支缺少仍在主文件中的文件。
如何还原文件?
我得到了删除文件的提交哈希,并尝试:
git checkout 1f1d3f76bac0bf6e13ceee5bb3df69f8389fc73f -- /path/to/MyMissingFile
但是git说pathspec did not match any files known to git
。我确认文件名和提交均正确无误,可git log --diff-filter=D --summary
用于打印发生删除的提交和文件名。
使用Git 2.23+的正确命令将git restore
代替令人困惑的git checkout
命令。
git restore -s master -- /path/to/MyMissingFile
那只会在工作树上仅还原“ source”(-s
)分支中存在的文件master
。
恢复工作树和索引:
git restore -s master -SW -- /path/to/MyMissingFile
(-SW
:的缩写--staged --worktree
)
如果仅还原工作树,则a git diff
(如此处所示)将在索引(仍反映正在删除的文件)和工作树之间进行区分。
通过还原工作树和索引,可以直接添加还原的文件,然后再提交。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句