另一點我們有以下的歷史移動分公司在歷史
start master public
| | |
v v v
o---o-- ... --o---o---o
不幸的是,我們做了一些提交到master
分支包含一些敏感數據。我們在一個名爲public的獨立分支中修改了這個。現在我們要「切斷」public
分支,以便在public
中獲得一個完整且乾淨的「狀態」,但沒有通過master
仍包含的妥協歷史部分。換句話說,我們希望以下新的歷史:
start master
| |
v v
o---o-- ... --o---o
\
o <- public
現在退房public
將導致相同的工作樹在原來的情況,但沒有合理的歷史細節。之後,我們將舊的master
分行暫存:將其重命名爲unsafe
,並從新的public
分行詳細說明新的master
分行。這樣,我們在保護的unsafe
老歷史,並能夠推動public
分支進入公衆無任何後顧之憂:
start unsafe
| |
v v
o---o-- ... --o---o
\
o---o-- ... --o <-- public
\ /
o-- .. --o-- ... --o <-- master
什麼是正確的Git命令來實現這一目標?
PS:當然我們可以結賬start
,建立一個新的分支並在那裏提交public
分支的整個工作樹。但是,必須有一種不同的,更有魅力的git方式!
@phlipsy這實際上並不是關於SU的主題,但我會根據要求將它遷移到SO,以便您不會必須重新發布。 – DMA57361
以下信息可能有所幫助:http://help.github.com/remove-sensitive-data/。 – Barend
看看http://stackoverflow.com/questions/872565/how-do-i-remove-sensitive-files-from-gits-history – Chris