爲了追蹤我的軟件在哪一點破壞了某個功能,我需要查看我的存儲庫的舊版本。我只想將工作目錄設置爲較舊的提交,使用代碼進行播放,之後放棄更改,然後嘗試另一次提交。如何將工作目錄設置爲較舊的提交?
我不想改變任何關於提交的內容,既不刪除也不創建它們。我嘗試使用git reset
,但在此之後,更新的提交不再顯示。所以我再次下載版本庫,因爲我不知道如何恢復。
爲了追蹤我的軟件在哪一點破壞了某個功能,我需要查看我的存儲庫的舊版本。我只想將工作目錄設置爲較舊的提交,使用代碼進行播放,之後放棄更改,然後嘗試另一次提交。如何將工作目錄設置爲較舊的提交?
我不想改變任何關於提交的內容,既不刪除也不創建它們。我嘗試使用git reset
,但在此之後,更新的提交不再顯示。所以我再次下載版本庫,因爲我不知道如何恢復。
簡單git checkout old-sha1
可以是一個開始,但對於那種任務的真正的命令是:
查找二進制搜索介紹了一個bug
如果你有能一個腳本來測試,如果你的工作樹「工程」或沒有,你可以在以前的承諾通過git bisect
執行該腳本的變化,找到打破你的測試的第一次提交。
請注意,此命令尚未直接受GitHub for Windows支持:您將不得不打開一個shell。
一個git checkout
會離開你在一個分離的頭,這並不重要,因爲你不會做任何修改。
要回到了你,簽了一個分支:
git checkout master
請參閱 「Why did git detach my head?」。
謝謝,我以爲'checkout'只適用於以前的分支。我可以使用哪種腳本進行「平分」?我的應用程序是用本機C++編寫的。順便說一下,Git給我留下了深刻的印象,包括這樣一個命令。 – danijar 2013-05-14 09:43:07
@danijar不,你可以檢查任何樹木。例如,'git checkout「@ {10 minutes ago}」'會在10分鐘前給你提交。 – VonC 2013-05-14 09:45:22
@danijar git bisect,任何你想要的腳本,只要它退出狀態0(工作)或1(失敗)。 – VonC 2013-05-14 09:45:56
使用git checkout <branch_name>
您可以切換到其他可用分支。如果你想重置HEAD
到老犯,你可以試試下面的命令:
git reset --hard <commit>
通過這種方式,你可以將工作目錄設置到舊:硬頭〜2的2提交等此外,如果你已經提交,那麼你可以試試這個命令重置HEAD承諾。
要徹底放棄更改,您可以嘗試:git reset --hard
這將清理您的目錄到以前的提交。
您可以通過使用下列檢查另外一個分支代碼指數:
git checkout my-other-branch .
的點是表示要爲整個庫做一個路徑說明。您也可以只指定一個特定的文件夾。從技術上講,你可以爲my-other-branch
參數指定任何'tree-ish'說明符,例如標籤,提交散列,例如HEAD~1
等等。如果你想這些變化是不分級的,你可以再做:
git reset HEAD
假設你在一個乾淨的狀態開始,你現在就會有你的工作目錄是在相同的狀態my-other-branch
。
我在谷歌搜索之後來到這裏「[將工作目錄交換到較早的提交但保持不變](https://www.google.co.uk/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF- 8#安全=活動&q =交換+工作+目錄+到+ +的早期+承諾+但+留下+頭+不變)」。我結束了使用'git checkout - '我想恢復到之前提交的文件 –
dumbledad
2016-11-01 15:53:58