- 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/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许在 Stack Overflow 上提出有关通用计算硬件和软件的问题。您可以编辑问题,使其成为
当我尝试在 db2 中创建表时,它抛出以下错误 $ db2 CREATE TABLE employee(emp_id INT NOT NULL, emp_name VARCHAR(100)) sh:
我有: while (i < l) { if (one === two) { continue; } i++; } 但是 JSLint 说: Problem at line 1 chara
所以我有这个代码: char inputs[10] = ""; int numInputs = 0; while (numInputs < 10){ char c; printf("E
var ninja = { name: 'Ninja', say: function () { return 'I am a ' + this.name; }
我收到一个我不明白的错误,请注意,我是编码新手,所以这可能是一个简单的错误。 #include using namespace std; int main() { //Initialise Fahr
我正在使用 javascript 和 react,由于某种原因,我收到了一个奇怪的 token 错误。 这是发生错误的代码: renderNavBar() { if (!this.us
Closed. This question is off-topic。它当前不接受答案。
由于某种我无法解释的原因,编译器正在输出一个错误,指出它发现了一个意外的#else 标记。 这发生在文件的开头: #if defined( _USING_MFC ) #include "stda
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
这个问题在这里已经有了答案: Difference between sh and Bash (11 个答案) 关闭 2 年前。 我正在编写一个简单的 bash 脚本,我在 XX `(' unexpe
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 此问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-topic
我在 Windows 7 上编写了一个脚本,它不断给我一个错误“(此时出乎意料。”对于以下代码 if %vardns%=="NODNS" ( netsh interface ipv4 set ad
我正在尝试使用xmlstarlet(使用xpath)解析XML文件,但是出现语法错误,并且我不知道如何更正我的代码。 这是我的脚本: #!/bin/bash if [ $1=="author" ];
以下脚本旨在在目录中的所有文件上运行程序“senna”,并将每个文件的输出(保留输入文件名)写入另一个目录 for file in ./Data/in/*; do ./senna -iobta
我从 challengers.coffee 运行此代码,并收到错误 ActionView::Template::Error (SyntaxError: [stdin]:3:31:unexpected
我在 config.db.database; 行中有语法错误(意外的标记“.”)。这是我在文件中的代码 const config = require('../config/config') const
这一定很明显,但是我无法使它正常工作。我正在尝试传输应该用于构建$ classKey的对象,这反过来又导致删除所需的软件(amd64或i386)。好吧,这里的代码: $name = @("softwa
我正在使用 1.3.7 版学习 Grails,但我一直无缘无故地遇到以下语法错误: unexpected token: mapping @ line x, column y. 有一次,我通过运行“gr
我正在尝试找出这段Pascal代码的问题 function Factorial(n: integer): integer; begin if n = 0 then Result := 1
我是一名优秀的程序员,十分优秀!