為何無法正確執行git reset --hard HEAD^
Git入門書裡都會提到放棄最後一次的commit而回復到再上一次commit的指令:
git reset --hard HEAD^
但是這個指令在Windows的命令提示字元cmd.exe裡卻無法執行,會出現錯誤:
D:\git-root\test>git reset --hard HEAD^ More? More? fatal: ambiguous argument 'HEAD ': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git[ ...] -- [ ...]'
今天終於弄清楚了:^是cmd.exe的escape字元,屬於特殊字元,命令裡要用到文字 ^ 時必須用雙引號把它夾起來,因此只要如下就可以正確執行:
git reset --hard HEAD"^"
或者:
git reset --hard "HEAD^"
或許有人會覺得奇怪:為何不直接使用bash就好,因為幾乎所有的教學或書籍都是在bash環境裡展示的。最主要的原因是團隊成員程度參差不齊,為能有效推廣學習,還是先讓大家能在既有的環境裡把動作先做好,行有餘力者再自行去使用別的環境吧,畢竟要操作的是Git而不是再多去學另一個Shell。
##
您可能也會有興趣的類似文章
- 建立測試環境以git rebase -i變更Commit歷史 (0則留言, 2014/10/08)
- 撰寫git info工具以模擬svn info功能 (0則留言, 2014/09/01)
- 將Git分支名稱加到提示字元(Prompt)裡 (0則留言, 2014/09/02)
- Subversion版本庫匯入Git的步驟與SVN整合步驟 (0則留言, 2014/10/03)
- Git的Staging Area的中文翻譯探討 (2則留言, 2014/09/12)
- [Git#9] Gitea 安裝與設定:輕量級程式碼託管解決方案 (0則留言, 2022/05/22)
- [Windows] 用Gitea架設自用的Git Server (2則留言, 2017/07/21)
- [分享] 濱野純訪談:為什麼 Google 接管開發 Git 2.0 了? (0則留言, 2018/05/25)
- [Git#5] 產生Commit的檔案清單與相對路徑的壓縮檔;Windows適用 (0則留言, 2020/04/03)
- Git https/SSL 連線失敗時的解決方法 (0則留言, 2022/09/06)
- [Git#8] 用pre-commit檢查提交時的分支是否正確 (0則留言, 2020/04/20)
- 使用SmartGit整合Subversion中央版本庫與Git本地端操作 (0則留言, 2017/05/05)
- [Git#5-2] 補充說明:產生Commit的檔案清單壓縮檔 (0則留言, 2020/04/22)
- 啟用Gitea Server的SSH服務,可大幅增加連線速度 (0則留言, 2018/02/15)
- Gitea網頁添加自訂選項以開啟說明文件 (0則留言, 2022/09/01)
Sorry, 很久沒用Google sc…