我刚刚做了一个舞台:
git add .
当我想重置时,我使用了:
git rm .
突然所有文件都被删除!!我认为它应该只是删除了树,它就像我一样:
rm -rf ./*
为什么要删除所有文件?我应该使用什么命令?
答案 0 :(得分:3)
当您从索引和工作树中删除文件时,git会注意到您当前提交中的文件现已消失,因此git status
将显示这些文件已被删除。
然而,没有必要恐慌。这只是Git告诉你它看到那些文件与先前提交相比消失的方式。这些文件仍存在于仓库中。实际上,如果您现在暂存所有删除并提交,那么您只需要一个没有文件的新提交,但您当前的提交仍将与repo中的所有文件一起存在。您可以随时查看它,并将这些文件恢复到工作目录中。
this answer中提供了有关如何从git rm
恢复文件的信息。
注意:小心:
git reset --hard
这将适用于这种情况(根据其他答案),但要小心一点 - 了解虽然它会将所有文件恢复到最后(当前)提交,这意味着您将丢失所有更改索引和工作目录。在这种情况下,您确实要恢复所有文件(因为
git rm .
已删除所有文件),因此这不是问题。您可以使用
将单个文件还原到上次提交状态git reset --hard [filename]
关于如何从暂存区域中删除文件 - 我更喜欢使用Git Extensions,这是一种流行的开源Git GUI工具。当你点击'#34; commit"按钮,它打开一个提交窗口,显示所有阶段和非阶段文件的任何更改,让你点击它们中的任何一个,看到变化的差异,并有按钮在工作目录之间移动它们索引。
但是如果你想要命令行选项,你可以使用这个命令:
git reset
将删除索引中的所有文件/更改(注意:没有句号!!)。此外,您可以使用:
git reset [filename]
只取消[filename](或文件名模式,如* .txt)。
这与使用git reset --mixed
相同,并导致git将所有文件(或仅[filename])设置回当前提交时的状态。 --mixed
选项仅重置索引,而不是工作目录,因此它不会删除文件中的任何更改,它只会使文件/更改无法执行。
如果您使用git reset --soft
,则无法执行任何操作 - --soft
不会重置索引或工作目录,因为您没有指定不同的内容分支或提交,它将使用现有索引和工作目录将所有文件重置为当前提交 - 这是您已经拥有的!
如果你使用git reset --hard
那么它将清除索引和工作目录,并将文件恢复到当前提交的原始条件 - 它们将在没有更改的情况下被取消 - 这是一个解决方案修复删除问题。
答案 1 :(得分:2)
如果您想重置添加内容,则可以完成
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.2/js/materialize.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.2/css/materialize.min.css" rel="stylesheet" />
<section id="slide-out" class="side-nav blue-grey lighten-4"><button>Send AJAX request</button></section>
<a href="#" data-activates="slide-out" class="button-collapse" style="display:none;"><i class="material-icons">menu</i></a>
<table class="responsive-table">
<thead>
<tr>
<td>Name</td>
<td>Place</td>
<td>Animal</td>
<td>Thing</td>
</tr>
</thead>
<tbody>
<!-- A Number Of Rows -->
<tr class="table-row">
<td>Bob</td>
<td>Berlin</td>
<td>Mouse</td>
<td>TV</td>
</tr>
<tr class="table-row">
<td>Luke</td>
<td>Munich</td>
<td>Giraffe</td>
<td>Radio</td>
</tr>
<!-- A Number Of Rows -->
</tbody>
</table>
在您执行git reset --hard
之前,它会让您回到状态,并且应该恢复已经消失的所有文件。
答案 2 :(得分:1)
尝试使用:
重置为上次提交 git reset HEAD --hard
答案 3 :(得分:-1)
所有这些重置对我均不起作用,这让我多么害怕!我的情况:我有一个空的存储库,并且进行了4次提交。我需要做的是在git rm生效之前进行特定的提交。因此,就我而言,如果上述方法不起作用,请尝试:
git log
git checkout <your-before-git-rm-commit>