我删除了一些文件.
我还没有承诺.
我想重置我的工作区以恢复文件.
我做了一个git checkout ..
但删除的文件仍然缺失.
并git status显示:
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# deleted: cc.properties
# deleted: store/README
# deleted: store/cc.properties
#
Run Code Online (Sandbox Code Playgroud)
为什么不git checkout .将工作区重置为HEAD?
Nou*_*him 758
输出告诉您需要做什么.git reset HEAD cc.properties等等
这将取消rm操作.之后,git status再次运行将告诉您需要执行a git checkout -- cc.properties以获取文件.
更新:我的配置文件中有这个
$ git config alias.unstage
reset HEAD
Run Code Online (Sandbox Code Playgroud)
我通常用它来取消东西.
CB *_*ley 201
您已暂停删除,因此您需要执行以下操作:
git checkout HEAD cc.properties store/README store/cc.properties
Run Code Online (Sandbox Code Playgroud)
git checkout . 仅从已进行删除的索引中检出.
sed*_*nym 162
做就是了 git checkout path/to/file-I-want-to-bring-back.txt
Pao*_*loC 135
要一次性自动恢复所有未分级删除,而不指定每个单独路径:
git ls-files -d | sed -e "s/\(.*\)/'\1'/" | xargs git checkout --
Run Code Online (Sandbox Code Playgroud)
要一次性自动恢复所有暂存的删除,而不指定每个单独的路径:
git status | grep 'deleted:' | awk '{print $2}' | xargs git checkout --
Run Code Online (Sandbox Code Playgroud)
Pau*_*l T 76
由于您正在执行某项操作git checkout .,因此您似乎正在尝试将分支恢复到上次提交状态.
你可以用一个来实现这个目标 git reset HEAD --hard
这样做可能会删除所有最新修改并取消修改,例如,您可能会失去工作.它可能是你想要的,但请查看文档以确保.
Aur*_*zeb 57
如果你用过
git rm filename
Run Code Online (Sandbox Code Playgroud)
然后删除一个文件
git checkout path/to/filename
Run Code Online (Sandbox Code Playgroud)
不起作用,所以在那种情况下
git checkout HEAD^ path/to/filename
Run Code Online (Sandbox Code Playgroud)
应该管用
Chr*_*haw 28
这是在我的Mac上帮助我的命令.我尝试了其他一些解决方案,但它们对我不起作用.
OSX Mavericks上的Git版本
mac-pro:main chris$ git version
git version 1.8.5.2 (Apple Git-48)
Run Code Online (Sandbox Code Playgroud)
命令
git checkout HEAD -- path/to/file/file.cc
Run Code Online (Sandbox Code Playgroud)
Dus*_*etz 18
git checkout HEAD -- client/src/pp_web/index.cljs
Run Code Online (Sandbox Code Playgroud)
ric*_*usa 17
使用git ls-files检出删除(-d)或修改(-m)文件.
git checkout $(git ls-files -d)
Run Code Online (Sandbox Code Playgroud)
Cas*_*kes 16
记得使用句点,因为它告诉git抓取所有文件.
此命令将重置头部并取消所有更改:
$ git reset HEAD .
Run Code Online (Sandbox Code Playgroud)
然后运行此命令以恢复所有文件:
$ git checkout .
Run Code Online (Sandbox Code Playgroud)
然后做一个git状态,你会得到:
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Run Code Online (Sandbox Code Playgroud)
以下是不同的案例,作为帮助他人的参考:
如果尚未提交删除,则以下命令将在工作树中恢复已删除的文件。
$ git checkout -- <file>
Run Code Online (Sandbox Code Playgroud)
您可以使用以下命令获取工作树中所有已删除文件的列表。
$ git ls-files --deleted
Run Code Online (Sandbox Code Playgroud)
如果删除已被提交,找到它发生的提交,然后从这个提交中恢复文件。
#find the commit hash where it had this file deleted
$ git rev-list -n 1 HEAD -- <file>
Run Code Online (Sandbox Code Playgroud)
它应该给你类似的东西c46e81aa403ecb8a0f7a323a358068345,现在将这个提交哈希与父操作符 ( ^) 一起使用,如下所示:
$ git checkout <commit>^ -- <file>
Run Code Online (Sandbox Code Playgroud)
例子:
$ git checkout c46e81aa403ecb8a0f7a323a358068345^ -- <file>
Run Code Online (Sandbox Code Playgroud)
如果您正在寻找要恢复的文件路径,以下命令将显示所有已删除文件的摘要。
$ git log --diff-filter=D --summary
Run Code Online (Sandbox Code Playgroud)
如果只想显示文件列表:
git log --diff-filter=D --summary | grep "delete mode"
Run Code Online (Sandbox Code Playgroud)
小智 8
你能想要看到这个吗?
适用于您使用过的情况
git checkout -- .
Run Code Online (Sandbox Code Playgroud)
在你做某事之前.
您可能还想删除尚未创建的已创建文件.你不想要它们.用:
git reset -- .
Run Code Online (Sandbox Code Playgroud)
在寻找有关如何在从另一个分支合并之后取消删除在我的工作目录中删除的文件的答案时找到这篇文章.合并后尚未提交.由于它是一个正在进行的合并,我不能只使用以下方法将其添加回来:
$ git reset <commitid#-where-file.cpp-existed> file.cpp
Run Code Online (Sandbox Code Playgroud)
除了重置之外我还要做另一个步骤来恢复文件:
$ git checkout -- file.cpp
Run Code Online (Sandbox Code Playgroud)
如果您还没有提交任何更改,您所要做的就是隐藏这些更改,然后您将返回到上次工作提交。
git stash
git stash clear
git clean
Run Code Online (Sandbox Code Playgroud)
这对我来说是最简单的方法:
git checkout HEAD~1 path/to/myfile.rb
Run Code Online (Sandbox Code Playgroud)
我在这里找到的。
另一种方法也对我有用:
git reset HEAD path/to/myfile.rb
git restore path/to/myfile.rb
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
513213 次 |
| 最近记录: |