我是 git 的新手,我犯了一个大错误。其他相关线程没有解决我的问题。这是发生的事情,感觉“git rm”就像 Linux rm 命令一样工作。
一开始,我使用
将开发文件夹添加到 git repo 中git add dir_name1
在过去的几天里,我在该目录中创建了更多文件并重命名了一些文件,我认为它需要在 git 中手动添加新文件,因为我在那之后提交了所有类型的更改,但新文件没有保存在存储库中。
今天完成工作后,我决定使用添加这些新文件
git add dir_name1
我猜新文件会被自动找到并添加,但是当我看到一些临时文件(ubuntu中以“~”结尾的文件)也被添加了。
为了删除这些 tmp 文件,我认为“git rm”是“git add”的对应项,所以我可以执行“git rm dir_name1”,然后手动删除所有以 ~ 结尾的文件,然后执行“git add dir_name1” "再来一次就可以了。
所以我所做的是
git rm -r -f dir_name1
天哪,整个目录都丢失了,用“git reset”恢复以及其他一些技巧都没有恢复这些新文件。
“git rm”是否像 Linux“rm”命令一样删除?有没有办法恢复这些文件。
SOSSSSS
最佳答案
I saw that some temporary files (file ending with "~" in ubuntu) were also added
.gitignore
中的一个简单的 *~
就可以防止这种情况发生
I could do "git rm dir_name1" followed by delete all files ending with ~ manually
git rm -r -f dir_name1
(或 rm -r -f dir_name1
)将从磁盘中删除文件夹及其内容,无论是否带有 git
.
您可能仍然可以找到以前添加(暂存)的文件:
git fsck --cache --unreachable $(git for-each-ref --format="%(objectname)")
在“Undo git reset --hard
with uncommitted files in the staging area”中阅读更多内容
关于git rm undo 对于未添加的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33429148/