我想將我的git歷史記錄發佈到公共存儲庫,但希望刪除舊的提交。我所見過的所有方法都會改變新的提交的SHA1,這不是一種選擇,因爲我希望能夠推送到修改後的回購。無論如何要做到這一點?發佈部分git歷史
4
A
回答
5
如果您修改歷史記錄,那麼您將不可避免地更改較新提交的SHA1哈希值。這是因爲哈希基於整個歷史,而不僅僅是最新的快照。這是通過設計來捕捉存儲庫任何部分的腐敗(意外或惡意)。
1
我肯定失去了一些東西,但你不能使用類似:
git log --since="2009-1-1" -p
某一日期之後僅提取提交或:
git log -p 18f822e..HEAD
讓所有的歷史經過特定的提交。
+0
他寫了「歷史」,但文字表明他的意思是「部分存儲庫」。 – gimpf 2011-02-25 16:41:48
4
Ben James'評論是準確的。但是,你可以做的是在你當前的倉庫中啓動一個新的分支。從那裏,建立該分支的歷史,如你所願。發佈時,只需將該特定公共分支推出即可。這將爲您提供您正在尋找的功能。
下面是我只是做了它在我的測試案例:你想隱藏的
git branch stackoverflow #Get myself a working branch from current
git rebase -i deadbeef #0xDEADBEEF is the hex of my first commit
壁球一切。請注意,如果您有一個具有多個根的存儲庫,那麼git將獲得PISSED。這不應該是可能的,但我剛剛發現,通過一些神奇的svn轉換,我創造了這樣一個野獸。
一個項目也可以有多個根,儘管這並不常見(或者一定是個好主意)。
導出新分支。從那裏,你可以把它當作主發展分支,把其他的東西當作一個沒有暴露的主題或歷史分支。
相關問題
- 1. git拉分行歷史
- 2. git p4克隆文件歷史包括積分歷史
- 3. 重寫git歷史將主分支轉換爲開發分支?
- 4. 清理git歷史
- 5. git抓取歷史
- 6. 編輯git歷史
- 7. Git日誌歷史
- 8. 壁球git歷史
- 9. 的Git,SVN - 進口全部歷史
- 10. 如何在Git中記錄Web項目的發佈歷史?
- 11. Git歷史改寫搞砸了分支
- 12. Git重新分配壁球歷史
- 13. 如何拆分「歷史」git存儲庫?
- 14. 分割文件時保留git歷史
- 15. 沒有歷史的git分支
- 16. Git - 分支提交歷史重複
- 17. 如何分解歷史中的Git commit?
- 18. git改寫歷史(rebase舊分支?)
- 19. 如何隱藏/加密部分GIT歷史記錄?
- 20. 具有相關歷史的部分git克隆
- 21. 刪除我們的臃腫的git的歷史部分
- 22. Android平臺版本的歷史分佈
- 23. 項目發佈歷史文件
- 24. 在Windows Azure網站發佈歷史
- 25. Git的歷史:去圖
- 26. 用git走歷史嗎?
- 27. git merge操縱歷史
- 28. Git克隆/下載歷史
- 29. 刪除/摺疊git歷史
- 30. 在git中添加歷史
爲什麼這不是一個選項?你仍然可以推到新的回購。但是,是的,改變歷史會創造新的哈希值 - 這是Git的加密安全性的一部分。否則,任何人都可以僞造你的回購,並聲稱它與你的相同! – 2010-01-04 16:06:14