繁体   English   中英

如何在git中完全消除具有分离头的分支?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM