在Git中正确恢复已删除的文件夹,以便文件在当前分支中结束?

时间:2016-03-23 06:38:59

标签: git git-branch git-checkout

我需要恢复我在Git中删除的文件夹,但是我在执行此操作时遇到了问题,因此我最终将文件夹放在正确的分支中。

我做了:

git checkout commit_id -- /path/to/folder

这只是将repo置于分离的HEAD 状态,我不确定如何将文件恢复到 master 分支?

我也尝试过:

git checkout -b restore commit_id -- /path/to/folder

这创建了一个新的分支,但当我尝试将该分支合并到 master 时,它说它已经“已经是最新的”。

根据明显重复的问题,运行以下内容无效,这只是让我再次转到另一个分支:

git checkout myBranch -- /path/to/folder

为什么这么难?什么是正确的方法?

1 个答案:

答案 0 :(得分:1)

你的第一次尝试应该有效。一个工作的例子:

▸ git init
Initialized empty Git repository in /Users/***/Desktop/repo/.git/

▸ mkdir foo
▸ echo "foo" > foo/1
▸ git add foo
▸ git commit -m "file in foo"

▸ echo "bar" > 1
▸ git add .
▸ git commit -m "file"

▸ rm -rd foo
▸ git add foo
▸ git commit -m "removed foo"

▸ echo "foobar" >> 1
▸ git add .
▸ git commit -m "change"

树现在看起来像这样:

* 95e470d (HEAD -> master) change
* e644860 removed foo
* 35e2e02 file
* 16fd6f0 file in foo

▸ git checkout HEAD~2 -- ./foo/

结果:

▸ git status

    new file:   foo/1

我认为输入的路径可能是错误的。当我做git checkout HEAD~2 -- foo时,没有任何反应。尝试使用以./开头的相对路径。