Git HEAD detached from XXX 解決


Git 中的 HEAD 可以理解為一個指針,我們可以在命令行中輸入 cat .git/HEAD 查看當前 HEAD 指向哪兒,一般它指向當前工作目錄所在分支的最新提交

cat .git/HEAD ref: refs/heads/<branch name> // 正常 cad0be9ceb89f474c39360c4de337d4a8194cab0 // 游離狀態 

使用git checkout 來移動HEAD指針,移動的對象可以是分支指針也可以是快照。
HEAD指針可以指向快照也可以指向branch。當指向branch時提交后會和branch指針一起向后移動,當不指向branch提交時時則會在一個detached狀態。

當使用 git checkout < branch_name> 切換分支時,HEAD 會移動到指定分支。

git checkout <branch name> 

但是如果使用的是 git checkout <commit id>,即切換到指定的某一次提交,HEAD 就會處於 detached 狀態(游離狀態)


 
使用webStorm checkout
git checkout <commit id> 

HEAD 游離狀態的利與弊

利: 我們可以很方便地在歷史版本之間互相切換,比如需要回到某次提交,直接 checkout 對應的 commit id 或者 tag 名即可。

弊:在這個基礎上的提交會新開一個匿名分支且提交是無法可見保存的,一旦切到別的分支,游離狀態以后的提交就不可追溯了。

git branch
* (HEAD detached at 925fda6)
master
 
在游離狀態無法提交修改

解決辦法

1,查看當前分支狀態

git branch
* (HEAD detached at 925fda6)
master

2,新建一個臨時 tem 分支,把當前提交的代碼放到整個分支

git branch tem //tem是新建分支的名字
git checkout tem

3,換回要回到的那個分支,這里是 master

git checkout master

4,然后 merge 剛才創建的臨時分支

git merge tem
Updating cad0be9..2437c6b
Fast-forward
......

5,檢查是否有沖突,沒有就提交到遠端

git push origin master

6,刪除臨時分支

git branch -d tem


作者:相忘於天涯
鏈接:https://www.jianshu.com/p/fdd3c2d020d7
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

  

 

# 新建分支

  git branch imagebranch(分支名)

  # 至本地項目路徑,即.git所在路徑,將本地倉庫代碼導入新分支

  # 注意,此處需要輸入github用戶名、密碼

  git push origin imagebranch

  # 切換到該分支

  git checkout imagebranch

  # 校驗本地修改


免責聲明!

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



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