正确恢复 Git 中已删除的文件夹,以便文件最终位于当前分支中?
Restore deleted folder in Git correctly so files end up in current branch?
我需要恢复我在 Git 中删除的文件夹,但我在执行此操作时遇到了问题,所以我最终在正确的分支中找到了该文件夹。
我完成了:
git checkout commit_id -- /path/to/folder
这只是将 repo 置于 detached HEAD 状态,我不确定如何将文件返回到 master 分支?
我也试过:
git checkout -b restore commit_id -- /path/to/folder
这创建了一个新分支,但是当我试图将该分支合并到 master 时,它说它是 "Already up to date"。
运行 根据明显的重复问题,以下内容也不起作用,这只是让我再次切换到另一个分支:
git checkout myBranch -- /path/to/folder
为什么做起来这么难?正确的做法是什么?
您的第一次尝试应该可以。一个工作示例:
▸ 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
时,什么也没有发生。尝试使用以 ./
开头的相对路径。
我需要恢复我在 Git 中删除的文件夹,但我在执行此操作时遇到了问题,所以我最终在正确的分支中找到了该文件夹。
我完成了:
git checkout commit_id -- /path/to/folder
这只是将 repo 置于 detached HEAD 状态,我不确定如何将文件返回到 master 分支?
我也试过:
git checkout -b restore commit_id -- /path/to/folder
这创建了一个新分支,但是当我试图将该分支合并到 master 时,它说它是 "Already up to date"。
运行 根据明显的重复问题,以下内容也不起作用,这只是让我再次切换到另一个分支:
git checkout myBranch -- /path/to/folder
为什么做起来这么难?正确的做法是什么?
您的第一次尝试应该可以。一个工作示例:
▸ 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
时,什么也没有发生。尝试使用以 ./
开头的相对路径。