簡體   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