我想移動HEAD
,只有這樣做。移動git HEAD而不改變其他東西
這意味着我要保持不變:
- 指數(又名緩存/暫存區)
- 工作樹
- 提交到當前分支參考點
git reset --soft
做前兩個,但不是最後一個。
有沒有辦法做到這一點,而不創建一個新的分支?
我想移動HEAD
,只有這樣做。移動git HEAD而不改變其他東西
這意味着我要保持不變:
git reset --soft
做前兩個,但不是最後一個。
有沒有辦法做到這一點,而不創建一個新的分支?
使用git
管道命令update-ref
:
git update-ref --no-deref HEAD $hash
($hash
可以是SHA1散列縮寫形式(如1c93
),標籤或參考)
這是禮貌的離開reflog
中有關更改內容的消息。要做到這一點,創建別名:
head = "!p=\"$(git log -n1 --oneline --decorate)\" && git update-ref --no-deref -m \"Move HEAD from $p\" HEAD \"$1\" #" # Move HEAD to specified commit-ish
然後,當你:
git head 1c93
的reflog
將包含類似:
1c93601 [email protected]{0}: Move HEAD from fd88175 (HEAD -> master, tag: oldhead, origin/master) Add diff-highlight and icdiff
您可以通過執行實現這一目標:
echo $(git rev-parse $commit) > $(git rev-parse --git-dir)/HEAD
但不鼓勵。
你有沒有嘗試你的第一個建議?它爲我移動分支引用。 爲什麼第二種形式不鼓勵? –
@TomHale由於git沒有執行檢查,所以它有點苛刻。如果您嘗試這樣做,請務必先備份。 – blue112
什麼檢查被跳過,這怎麼會導致一個問題? –