猿问

在Git中删除一个分支后,我能恢复它吗?

在Git中删除一个分支后,我能恢复它吗?

如果我跑git branch -d XYZ有没有办法恢复树枝?是否有办法像我没有运行DELETE分支命令一样返回呢?



料青山看我应如是
浏览 2682回答 3
3回答

拉莫斯之舞

大多数情况下,不可访问的提交都在reflg中。所以,第一件事就是看一下翻版使用命令git reflog(它显示的是HEAD).如果提交是仍然存在的特定分支的一部分,则可能更容易使用以下命令git reflog name-of-my-branch..它也适用于遥控器,例如,如果您强制推送。如果您的提交不在重发中(可能是因为被不写入reflg的第三方工具删除了),我成功地恢复了一个分支,方法是使用这样的命令将我的分支重新分配到提交的sha(它创建了一个包含所有悬空提交的文件):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如果您应该多次使用它(或者希望将它保存在某个地方),您还可以使用该命令创建一个别名.git config --global alias.rescue '!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'然后把它和git rescue要调查已找到的提交,可以使用一些命令来查看每个提交。要显示提交元数据(作者、创建日期和提交消息):git cat-file -p 48540dfa438ad8e442b18e57a5a255c0ecad0560也可以看到不同之处:git log -p 48540dfa438ad8e442b18e57a5a255c0ecad0560找到提交后,在此提交上创建一个分支:git branch commit_rescued 48540dfa438ad8e442b18e57a5a255c0ecad0560

慕勒3428872

最高投票的解决方案实际上比要求的要多:git&nbsp;checkout&nbsp;<sha> git&nbsp;checkout&nbsp;-b&nbsp;<branch>或git&nbsp;checkout&nbsp;-b&nbsp;<branch>&nbsp;<sha>将您与最近可能忘记提交的所有更改一起移到新分支。这可能不是你的意图,特别是在“恐慌模式”后失去分支。A&nbsp;更清洁(更简单)的解决方案似乎是唯一的一条线(在你发现<sha>带着git reflog):git&nbsp;branch&nbsp;<branch>&nbsp;<sha>现在,您的当前分支或未实现的更改都不会受到影响。相反,只会创建一个新分支,直到<sha>.如果不是提示,它将仍然工作,您将得到一个较短的分支,然后您可以重新尝试使用新的<sha>和新的分支机构的名字,直到你弄好为止。最后,可以将成功还原的分支重命名为它的名称或其他任何内容:git&nbsp;branch&nbsp;-m&nbsp;<restored&nbsp;branch>&nbsp;<final&nbsp;branch>不用说,成功的关键是找到正确的承诺。<sha>因此,请明智地指出您的承诺:)
随时随地看视频慕课网APP
我要回答