So easy:git head detached 的解決


     (望結交天下才士 ,Contact:UVEgMTkwNDUyOTQzOA==)

     head detach可以理解為無頭的蒼蠅,即當前不屬於任何分枝,

     我們知道,git checkout本質上是修改HEAD里面的內容來讓它指向不同分支的,而HEAD文件指向的分支就是我們當前的分支,但是有時候HEAD不會指向任何分支,嚴謹的說是HEAD指向了一個沒有分支名字的修訂版本,此時恭喜你,已經處於游離狀態了(detached HEAD).這時候我們在進行commit操作不會提交到任何分支上去.

     這個時候輸入git status查看當前狀態發現我沒有在任何本地分支上,也驗證了剛才的猜想,而這時候我又作死的進行了commit操作,git提示我

 

     Warning: you are leaving 1 commit behind, not connected to any of your branches:

 

     fef4501 interrationRecord page completed

 

     If you want to keep them by creating a new branch, this may be a good time

     to do so with:

 

     git branch <new-branch-name> fef4501

    然后我歡天喜地的git checkout ask_11_16切換到工作分支以為萬事大吉,艾瑪坑爹啊,我特么辛辛苦苦寫了一天的代碼呢?不過這時候我們回看上面那段提示,智能的git告訴我如果我還想要這次提交的話,可以創建一個新的分支,同時把本次提交的id告訴了我:fef4501.

    那么這時候我已經有了一個思路:

    基於本次提交創建一個臨時分支.

    然后merge到我當前工作分支.

    刪除臨時分支

    實操:

    基於本次提交創建臨時分支

    輸入

    $git branch temp fef4501

     使用git branch 分支名 操作ID 這句命令能夠創建一個新的分支,但要注意此時我們還沒有切換到這個分支上,這個分支上面代碼跟我剛才提交完之后的一樣.

    切換到工作分支並合並代碼

    輸入

    $git checkout ask_11_16

    意味着我已經切換到ask_11_16分支,這個分支是我之前想要提交的分支.

    然后

    $git merge temp

    這行命令過后我們已經上次commit合並到ask_11_16上了,此時終端狀態為

    Your branch is ahead of 'origin/ask_11_16' by 1 commit.

    我們只需要$git push即可把本次提交push到遠程分支.

    這時候檢查代碼,perfect!正式我們想要的狀態.

 

    刪除temp分支

   大功告成,至於temp分支已經沒有了利用價值,本着過河拆橋的精神我不得不輸入

   $git branch -d temp

   來刪除temp分支.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM