【问题标题】:How do I "extract" my commited files?如何“提取”我提交的文件?
【发布时间】:2017-06-15 06:22:51
【问题描述】:

我的工作目录/tmp/working 中有两个文件file1.cfile1.h。我所做的一切都在我的本地文件系统上。

我在/tmp/working 中创建了一个git init,在其中创建了一个.git 目录。然后我git add file1.*git commit -m "Feb 13th 2017"

2 月 17 日,我不小心删除了工作目录中的两个文件。如何从本地 git 存储库恢复工作目录中的文件?我不想撤消最后一次提交或类似的事情,只想将我的文件副本(2 月 13 日版本)放回我的工作目录中。

【问题讨论】:

  • 你是用git rm删除的吗?能把 git status 的输出加到问题里吗?
  • 将存储库存储在/tmp 似乎有风险,重启后可能会被删除。

标签: linux git


【解决方案1】:

您可以尝试从最新提交中检查这两个文件:

git checkout -- path/to/file1.c
git checkout -- path/to/file1.h

Git 的好处是很难真正把事情搞砸。您仅在当前提交中本地删除了这两个文件。但是使用git checkout 可以轻松访问他们的历史记录。


实际上,任何路径都可以:

git checkout -- path/to/    # extracts the whole "path/to" directory
git checkout -- .           # extract all the content of the last commit

你也可以指定任何提交:

git checkout other_branch -- path/to/   # extracts content from other_branch
git checkout v1.7.3 -- path/to/         #                  from this tag
git checkout eacf33b -- path/to/        #                  from this commit

【讨论】:

  • 更一般地说:您可以通过运行:git checkout [branch_or_commit] -- path/to/file 在任何其他提交中获取文件的内容
  • 如何在不单独指定每个文件名的情况下提取文件?从本地存储库恢复到我的工作目录,整个项目提交的所有文件的最新版本?类似 arj x archive.arj
猜你喜欢
  • 2011-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-11
  • 2014-05-19
  • 2011-06-07
  • 2021-10-14
  • 1970-01-01
相关资源
最近更新 更多