2015-09-20 33 views
1

我添加了一個部署腳本檢測當前分支,然後在其他的事情上運行此:的Git的復位 - 硬上分離的頭

currentBranch=$(git rev-parse --abbrev-ref HEAD) 

eval "git fetch --all # fetch all remote branches" 
eval "git reset --hard origin/$currentBranch" # clean up currentBranch 

,如果一個新的分支是在bash腳本提供的I我會運行這個:

newBranch=$1 
eval "git checkout $newBranch" 

但是,在我跑它之前,我注意到服務器的當前分支是頭(應該是主)。

在運行部署之前,git reset --hard origin/HEAD的效果如何。我不關心HEAD上的任何跟蹤文件我只是想切換到一個新的分支來測試它,後來我將它返回到它應該是主人的東西。只是不知道如果我現在用分離的HEAD運行重置會發生什麼。

+2

一個方面:你不需要在這裏'eval' - 刪除它並且只在'$ variables'附近保留雙引號。 – Roman

回答

1

根據this:HEAD應該指向您的本地副本,因此重置它(假設您正在分支上而不是主人上)不應該引起任何問題。

+0

我只是想強調,只有在主人未做任何改變時才能重置HEAD,否則他們將會丟失。這裏的一個好的做法可能是在腳本的開頭添加一個'git branch [某個其他分支]',以確保master不會被意外地影響。 –