我需要恢复我在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
为什么这么难?什么是正确的方法?
答案 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
时,没有任何反应。尝试使用以./
开头的相对路径。