- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我刚刚制作了一个舞台:
git add .
当我想重置时,我使用了:
git rm .
突然所有的文件都被删除了!!我认为它应该只是删除了树工作,它就像我一样:
rm -rf ./*
为什么它删除了所有文件?我应该改用什么命令?
最佳答案
当您从索引和工作树中删除文件时,git 会注意到您在当前提交中拥有的文件现在已经消失,因此 git status
将显示这些文件已被删除。
不过,不必 panic 。这只是 Git 告诉您它看到那些文件与之前的提交相比消失的方式。这些文件仍然存在于 repo 协议(protocol)中。事实上,如果您暂存所有删除并立即提交,您将只有一个没有文件的新提交,但您当前的提交将仍然存在,并且所有文件都在 repo 中。您可以随时查看它,它会将这些文件恢复到工作目录中。
有关如何从 git rm
恢复文件的信息可在 this answer 中找到。 .
Note: Be careful with:
git reset --hard
This will work in this case (per the other answers), but be a little careful with it - understand that while it will restore all files to the last (current) commit, that means you will lose all changes both in the index and the working directory. In this case, you really do want to restore all files (since the
git rm .
deleted all of them), so that's not a problem.You can restore individual files to last commit status with
git reset --hard [filename]
关于如何从暂存区域中删除文件 - 我更喜欢使用 Git Extensions,这是一种流行的开源 Git GUI 工具。当你点击“提交”按钮时,它会打开一个提交窗口,显示所有已暂存和未暂存的文件以及任何更改,让你点击其中任何一个并查看更改的差异,并且有按钮可以在工作目录和索引。
但是如果你想要命令行选项,你可以使用这个命令:
git reset
将从索引中删除所有文件/更改(注意:无句号!!)。此外,您还可以使用:
git reset [filename]
仅取消暂存 [文件名](或文件名模式,如 *.txt)。
这与使用 git reset --mixed
相同,并导致 git 将所有文件(或仅 [filename])设置回当前提交时的状态。 --mixed
选项只会重置索引,不会重置工作目录,因此它不会删除文件中的任何更改,只会使文件/更改未暂存。
如果你使用 git reset --soft
它不会做任何事情 - --soft
不会重置索引或工作目录,因为你不要指定不同的分支或提交,它会将所有文件重置为具有现有索引和工作目录的当前提交 - 这是您已经拥有的!
如果你使用 git reset --hard
那么它将清除索引和工作目录并将文件恢复到当前提交的原始状态 - 它们将被取消暂存没有变化 - 这是解决删除问题的一种解决方案。
关于git - 如何恢复使用 `git rm .` 意外删除的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46241493/
我正在学习 git,但我对暂存和提交文件的不同方式感到困惑。为了解决这个问题,我使用了目录的比喻:工作目录、暂存目录、提交目录。 如果我rm 我的工作目录中的一个文件,它只会仅 从我的工作目录中删除它
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
在 Makefile 中,我读到: -rm -rf(而不是 rm -rf)。 Makefile 中行开头的第一个“-”是什么意思? 最佳答案 这意味着make本身将忽略来自rm的任何错误代码。 在 m
我正在使用此命令尝试删除一个非常大的文件夹中的所有 Thumbs.db 文件。我认为 -f 应该在不要求确认的情况下强制删除,但我仍然被提示在每个文件上输入“y”或“n”。 find "megapac
我想用 GIT 删除整个目录...每次我不断收到相同的错误并且不明白为什么会这样。 我想删除“blue_white”文件夹... ├── css │ ├── design.css │ └──
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
使用 /bin/rm abc.txt 有什么区别以及有时您必须这样做的时候 alias rm然后用 rm abc.txt 执行 最佳答案 /bin/rm将始终引用二进制 rm命令在您的系统上。如果你只
大多数文章,我都读过。他们建议使用 rm(list=ls())但我不知道如果我喜欢使用 rm() 有什么区别 我可以用rm()而不是 rm(list=ls())如果我想清除所有变量? 请给我一些建议。
问题 Bash 中的 rm -d 和 rm -R 命令有什么区别? 我应该使用哪一个? 详情 根据 rm 命令的手册页: rm -d 尝试删除目录以及其他类型的 文件。 rm -R 尝试删除以每个文件
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
标题是描述。 我只是想知道 rm -r 和 rm -R 之间有什么区别。 Linux man 描述似乎完全相同(还有一个,--recursive),但很多人使用 -r 和 -R 好像它们不一样。 所以
我使用 rm、Finder 等从 Git 存储库中删除了一堆文件和目录。 我正在寻找一个 Git 命令,它将这些记录到标记为删除的索引中,就好像我对它们调用了 git rm 一样。 我知道 git a
在 SVN 上,直接从文件系统中删除某些内容(而不是使用 svn)会带来很多麻烦。 我在使用 git 时没有发现这是一个问题,但我注意到 git 有它自己的 rm 实现(git rm). rm 和 g
我想备份我的 gitlab 容器。有两种选择: docker exec -ti my.gitlab.container sh -c "/opt/gitlab/bin/gitlab-rake gitla
我正在关注 this Wikipedia example查找和删除文件。 [jalal@galapagos-04] (5)$ touch 'not important_file' [jalal@gal
我有一个 shell 脚本在 cygwin 环境中的 windows 环境中运行。该脚本有一个清除功能,可以根据特定条件删除系统中的特定文件夹。 我准备好要删除的所有文件夹的列表,然后使用以下命令:
当我们使用 docker build 命令构建 docker 镜像时,我们有两个选项 --force-rm=true 和 --rm=true移除中间容器。这两个选项有什么区别,分别在什么场景下使用。
我在删除Docker容器时遇到问题-当我使用前一个命令时,它不起作用(Docker报告了容器ID,但没有删除它)。后者起作用了。据我所知,Docker语法是相同的: C:\Users\user>doc
我尝试计算数据 x 的每列的总和。但我总是遇到这个错误 "Error in colSums(x, na.rm = T) : invalid 'na.rm' argument" 为什么 na.rm 参数
有人知道如何删除 R 中除一个对象之外的所有内容吗?通常,要删除我编码的所有内容: rm(list=ls()) 所以我试过: rm(c(list=ls()-my_object)) 但它没有用。 最佳答
我是一名优秀的程序员,十分优秀!