(望結交天下才士 ,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分支.