我意外地说git rm -r ..我该如何从中恢复?
我没有承诺.
我认为所有文件都标记为删除,并且还从我当地的结帐中删除.
编辑:我可以(如果我知道命令)恢复到最后一次提交.但如果我可以撤消它,那将会好很多git rm -r ..因为我不确定我在最后一次提交之后和之前做了什么git rm -r ..
Bri*_*ell 452
git reset HEAD
Run Code Online (Sandbox Code Playgroud)
应该这样做.如果您没有任何您关心的未提交更改,那么
git reset --hard HEAD
Run Code Online (Sandbox Code Playgroud)
应该强行将所有内容重置为上一次提交.如果您确实有未提交的更改,但第一个命令不起作用,则使用以下命令保存未提交的更改git stash:
git stash
git reset --hard HEAD
git stash pop
Run Code Online (Sandbox Code Playgroud)
Jai*_*yer 242
我git-rm了几个文件,并在我下次提交之前继续进行更改,当时我意识到我需要一些这些文件.您可以根据需要简单地检查错过/删除的单个文件,而不是藏匿和重置:
git checkout HEAD path/to/file path/to/another_file
Run Code Online (Sandbox Code Playgroud)
这使您的其他未提交的更改保持不变,无需解决方法.
Arn*_* L. 54
要重新获得某些单个文件或文件夹,可以使用以下内容
git reset -- path/to/file
git checkout -- path/to/file
Run Code Online (Sandbox Code Playgroud)
这将首先重新创建索引条目path/to/file并重新创建文件,就像它在上次提交中一样,即HEAD.
提示:可以将提交哈希传递给两个命令,以便从较旧的提交中重新创建文件.查看git reset --help并git checkout --help了解详情.
Ale*_*own 27
更新:
由于git rm .删除了工作结帐中以及索引中此子目录和子目录中的所有文件,因此需要撤消以下每个更改:
git reset HEAD . # This undoes the index changes
git checkout . # This checks out files in this and child directories from the HEAD
Run Code Online (Sandbox Code Playgroud)
这应该做你想要的.它不会影响签出代码或索引的父文件夹.
旧答案不是:
reset HEAD
Run Code Online (Sandbox Code Playgroud)
将完成这一操作,并且不会删除您对文件所做的任何未提交的更改.
之后你需要重复git add你排队的任何命令.
Ski*_*ake 24
如果最终没有上述工作,您可以使用此处的建议检索数据:http://www.spinics.net/lists/git/msg62499.html
git prune -n
git cat-file -p <blob #>
Run Code Online (Sandbox Code Playgroud)
son*_* xu 11
撤消git rm
git rm file # delete file & update index
git checkout HEAD file # restore file & index from HEAD
Run Code Online (Sandbox Code Playgroud)
undo git rm -r
git rm -r dir # delete tracked files in dir & update index
git checkout HEAD dir # restore file & index from HEAD
Run Code Online (Sandbox Code Playgroud)
undo git rm -rf
git rm -r dir # delete tracked files & delete uncommitted changes
not possible # `uncommitted changes` can not be restored.
Run Code Online (Sandbox Code Playgroud)
Uncommitted changes包括not staged changes,staged changes but not committed.
Cor*_*son 10
如果您已提交并推送更改,则可以执行此操作以恢复文件
// Replace 2 with the # of commits back before the file was deleted.
git checkout HEAD~2 path/to/file
Run Code Online (Sandbox Code Playgroud)
已经有一些很好的答案,但我可能会建议一种使用不多的语法,它不仅效果很好,而且非常明确你想要的东西(因此不可怕或神秘)
git checkout <branch>@{"20 minutes ago"} <filename>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
219549 次 |
| 最近记录: |