在用Git工作時,可能會遇到這樣一種情況:想檢視歷史版本中的某個檔案,或整體切換到某個歷史版本,然後再切換回你當前的工作狀態。甚至,需要在這兩個版本間多次切換。
我之前使用的方式是:
# commit-id指的是版本hash值
git checkout <commit-id>
# 也可以透過以下命令完成
git switch --detach <commit-id>
這裡出現一個問題就是detached HEAD,影響不大。但做的任何修改都不會與分支關聯,需要小心處理。並且,如需要來回多次切換或在多個歷史版本間來回切換,這樣的操作方式就不是特別方便。
剛開始學習Git是,我甚至是透過reset回退到某個歷史版本。如果檢視某個歷史版本的檔案,甚至透過restore進行恢復。但我認為這些都不是最佳的工作方式,因為我之前忽略了一點,Git建立分支的開銷是非常小的,涉及到類似問題,建立分支會更加安全和方便。
因此,我個人認為最佳的的操作方式是給歷史版本建立一個臨時分支,這樣你可以在這個新分支上自由檢視和測試,而不會影響到你的主分支,完成後可以隨時刪除分支。
# 方式1
# 建立一個新分支,從指定版本開始,start-point可以是commit-id或tag。
git branch <new-branch-name> <start-point>
git switch <new-branch-name>
# 方式2
git switch -c <new-branch-name> <start-point>
當然,可能有更好的方式,歡迎大家示教。