在Git中恢复已删除的分支

7 浏览
0 Comments

在Git中恢复已删除的分支

我不小心删除了我的分支,像这样:

git branch -D demo

但是我想恢复它...在执行git reflog之后,我得到了下面的结果:

541b2f5 HEAD@{23}: checkout: 从demo切换到master

06fa6d5 HEAD@{24}: commit (merge): 删除变量和转换器的ajax调用

b84b60a HEAD@{25}: checkout: 从demo1切换到demo

我想用sha06fa6d5创建分支...所以我尝试了这个:

git checkout -b demo 06fa6d5

git checkout -b demo HEAD@{24}

但是我没有得到那段代码...

0
0 Comments

问题出现的原因是分支被意外删除,解决方法如下:

1. 创建一个包含所有悬空或无法访问的提交的列表

git fsck --full --no-reflogs --unreachable --lost-found

2. 打印丢失和找到的所有提交的提交消息列表

ls -1 .git/lost-found/commit/ | xargs -n 1 git log -n 1 --pretty=oneline

3. 通过手动检查(即阅读)的过程找到丢失的提交

4. 使用丢失的提交创建一个新分支

git checkout -b branch-name SHA

以下是一些用户对解决方法的反馈:

- 有用户在Windows上使用mysisgit进行操作,需要稍微修改过程,因为"lost and found"目录没有位于任何合理的位置。用户使用git fsck...的输出,并通过执行git log SHA来检查每个提交的SHA(而不是blob或tree)。

- 另一个用户对解决方法进行了适应:git fsck --full --no-reflogs --unreachable --lost-found | grep commit | cut -d\ -f3 | xargs -n 1 git log -n 1 --pretty=oneline > .git/lost-found.txt

- 有用户在Windows的git bash中使用Philippe的oneline命令,只需在 " cut -d\ -f3 " 中的"-d\ "之后添加一个额外的空格(在评论中无法显示,因为格式化会删除重复的空格)。

- 还有用户对解决方法表示赞赏。

0
0 Comments

在使用Git时,有时候会不小心删除了一个分支。这个问题的出现是因为在Git中,删除一个分支实际上只是删除了对该分支的引用,而不是真正删除了分支上的提交记录。所以,只要我们能找到该分支最后一次提交的sha1值,就可以恢复被删除的分支。

要找到被删除分支的最后一次提交的sha1值,我们可以使用以下步骤:

1. 首先,得到被删除分支最后一次提交的sha1值。

git reflog show --date=iso demo

2. 然后,使用以下命令来浏览该提交的历史记录,确保我们找到了正确的sha1值。

gitk sha1

一旦我们确定了被删除分支的最后一次提交的sha1值,我们就可以使用以下步骤来恢复被删除的分支:

1. 首先,使用以下命令创建一个新的分支,并将其指向被删除分支的最后一次提交的sha1值。

git branch demo sha1

2. 然后,使用以下命令来切换到新创建的分支。

git checkout demo

现在,我们成功地恢复了被删除的分支。通过这种方法,我们可以轻松地恢复任何被不小心删除的分支,并继续在该分支上进行开发工作。

0