[英]How to absolutely obliterate a branch with a detached head in git?
我处于恐慌状态。
我不小心损坏了几个分支,失去了一些工作,但到目前为止,我仍然充满希望。 有一个单独的头部,包含大约10个小时的工作。
我损坏了另一个工作了12个小时的尝试,试图将git分支合并/恢复为分离头的信息。
基本上,我需要/想要的是采用当前的分离头,并迫使一个分支逐个字符地变成分离头,不合并,不检查。 唯一重要的是,该分支完全变成了分离的头,而git对此却一无所知。
然后,我需要将此消失的分支与master合并。
请帮忙,工作10个小时相当多。
首先,应该复制整个git repo / project; 那么您可以尝试任何操作,并且在进行安全备份的同时进行操作。
如果可以访问gitk
,则可以使用gitk --all
来全面了解树中所有引用,本地,远程和隐式提交,这些概述可能会显示一些假定丢失的引用。
git checkout -b <new branch>
将在当前的提交或分离状态下创建一个新分支。
然后,您可以git add -A
来确保git add -A
所有(不可忽略的)文件,然后对该新分支进行紧急提交,以确保从该分支转移时不会丢失任何未提交的文件。
git reflog
是你的朋友。 它可以帮助您回到以前的状态,否则将丢失。 (先备份)。
要将恢复的分离的HEAD分支放到master上,可以使用Cherry-pick,rebase或merge。
git rebase --onto master recovered^ recovered
例如,将在master
之上recovered
的分支中的单个提交作为基准。
首先执行git status,以确认没有未跟踪的文件(并且HEAD已分离)
然后从那里创建一个新分支:
git checkout -b tmp
最后,您可以将任何分支重置为其:
git checkout -B aBranch tmp
如果您的工作(在此分支中或另一个也已损坏)已提交,则应该能够在git reflog
找到这两个分支。
也不要忘记检查您的IDE:它可以为您的文件保留自己的本地历史记录。 (例如, 带有此插件的Visual Studio代码 )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.