回答
您可以將您的存儲庫「重置」爲任何您想要的提交(例如1個月前)。
使用git-reset爲:
git clone [remote_address_here] my_repo
cd my_repo
git reset --hard [ENTER HERE THE COMMIT HASH YOU WANT]
你沒有提到它,但這隻會重置'master'分支,該分支在克隆上默認檢出。如果'master'以外的分支是您的主開發分支,那麼必須在'git reset'之前首先檢出。 – 2010-08-24 09:53:07
@Steve true! +1 – 2010-08-24 11:32:33
爲什麼你不做一個簡單的結賬通緝? – nemoo 2013-05-23 10:44:32
使用git log
找到您要回滾到修訂,並注意到提交散列。在此之後,你有2種選擇:
如果您計劃,修改後提交什麼,我建議你籤一個新的分支:如果你不
git checkout -b <new_branch_name> <hash>
計劃於改版後提交任何東西,你可以簡單地籤無分支:
git checkout <hash>
- 注意:這將使您的資料庫中「分離的頭」狀態,這意味着它目前不依附於任何分支 - 那麼you'll have some extra work to merge new commits to an actual branch。
例子:
$ git log
commit 89915b4cc0810a9c9e67b3706a2850c58120cf75
Author: Jardel Weyrich <suppressed>
Date: Wed Aug 18 20:15:01 2010 -0300
Added a custom extension.
commit 4553c1466c437bdd0b4e7bb35ed238cb5b39d7e7
Author: Jardel Weyrich <suppressed>
Date: Wed Aug 18 20:13:48 2010 -0300
Missing constness.
$ git checkout 4553c1466c437bdd0b4e7bb35ed238cb5b39d7e7
Note: moving to '4553c1466c437bdd0b4e7bb35ed238cb5b39d7e7'
which isn't a local branch
If you want to create a new branch from this checkout, you may do so
(now or later) by using -b with the checkout command again. Example:
git checkout -b <new_branch_name>
HEAD is now at 4553c14... Missing constness.
這樣,你不會丟失任何信息,因此,你可以當它成爲穩定移動到一個新的版本。
您所需要的源代碼樹在git倉庫中仍然可用,但是,您將需要您感興趣的提交的SHA1。我假設您可以從當前擁有的克隆中獲取SHA1?
如果你能得到那個SHA1,那麼你可以在那裏創建一個分支/重置來擁有相同的存儲庫。
命令按照瑞的回答
與集中版本控制系統,Git的克隆整個存儲庫,這樣你就不會只得到當前的遠程文件,而是整個歷史。您本地存儲庫將包含所有這些。
也許已經有標籤以紀念當時的特定版本。如果沒有,你可以在本地創建它們。一個好的方法是使用git log
,或者更直觀地使用gitk
(可能是gitk --all
查看所有分支和標籤)。如果您可以發現當時使用的提交哈希,則可以使用git tag <hash>
對它們進行標記,然後在新的工作副本中檢查這些哈希(例如git checkout -b new_branch_name tag_name
或直接使用哈希代替標記名稱)。
當我尋找某個作者提交(比如我)我過濾日誌與
git log --author=[authorname]
這不回答問題 – 2015-08-20 13:15:59
您可以在此順序使用簡單
git checkout commithash
git init
git clone `URLTORepository`
cd `into your cloned folder`
git checkout commithash
提交哈希看起來像這樣「45ef55ac20ce2389c9180658fdba35f4a663d204」
我喜歡這個回答最好。我認爲'git reset --hard'應該避免,以'git checkout commit-hash'爲代價。 'git reset --hard'可以刪除有時候並不需要的部分git歷史記錄。 – 2016-10-25 06:16:00
很可能git reset
解決了您的問題。
git reset --hard -#commit hash-
- 1. 克隆git倉庫
- 2. 當我從github遠程倉庫克隆時,遠程倉庫的哪個分支被克隆到本地倉庫?
- 3. 克隆git倉庫失敗
- 4. 克隆git倉庫失敗
- 5. 運行克隆Git倉庫
- 6. 克隆git倉庫而不保留本地版本
- 7. jGit克隆從Java的遠程git倉庫
- 8. 連接和克隆遠程git倉庫之間的區別
- 9. 從svn倉庫克隆的Git無法識別遠程
- 10. 克隆git倉庫的.git目錄
- 11. Git遠程克隆
- 12. 如何在Windows上設置和克隆遠程git倉庫?
- 13. 從本地到遠程的git克隆
- 14. 克隆SVN倉庫本地
- 15. 克隆私人git倉庫的Dockerfile
- 16. Python的方式克隆git倉庫
- 17. git克隆分叉git分支的特定版本
- 18. 克隆遠程git存儲庫問題
- 19. 將遠程git克隆到本地
- 20. Git克隆 - 無法克隆遠程存儲庫
- 21. 如何用GitLab克隆git倉庫
- 22. SSH錯誤克隆Git倉庫
- 23. 無法從github克隆git倉庫
- 24. 使團隊克隆git倉庫
- 25. 創建一個git倉庫克隆
- 26. 克隆Git倉庫通過ANT
- 27. 不是一個Git倉庫克隆
- 28. 而克隆一個Git倉庫
- 29. 錯誤:克隆裸git倉庫
- 30. 如何從VM中克隆Git倉庫?
http://stackoverflow.com/questions/3489173/how-to-clone-git-repository-with-specific-revision-changeset的可能的複製 – 2013-06-12 04:28:31