我一直在研究一個私人回購,並將發佈到GitHub。Git - 通過單一整合提交推送到新的遠程
問題是我有很多很多的提交,並且爲了衛生的緣故,我想只有一個提交出現在GitHub中。
如何在不推送歷史的情況下推送?即鞏固整個MASTER成一個單一的承諾
非常感謝提前。
Doug
我一直在研究一個私人回購,並將發佈到GitHub。Git - 通過單一整合提交推送到新的遠程
問題是我有很多很多的提交,並且爲了衛生的緣故,我想只有一個提交出現在GitHub中。
如何在不推送歷史的情況下推送?即鞏固整個MASTER成一個單一的承諾
非常感謝提前。
Doug
查看git rebase。交互模式。
通常會使用git rebase --interactive HEAD~n
其中n是否。你想合併成一個提交。然而,在你的情況下,你想把整個歷史壓縮成一個單獨的提交,並且因爲沒有父級(直到初始提交)的重新綁定是不可能的,所以我們必須使用git reset
和git commit --amend
。
這裏就是你要做的:
git log --oneline
。找到您的初始提交的SHA。fe7d5d1
。運行git reset fe7d5d1
。這會將分支重置爲初始提交。git add .
來進行所有更改。git commit --amend -m "Initial commit"
。git log --oneline
。小心:永遠不會改寫/壓扁/重新綁定提交您已經推送到遠程回購。
如果我把整個歷史推向bitbucket的私人回購,但只是想將當前狀態(即重新發布)推向github,該怎麼辦? – Doug
這個想法永遠不會改寫已經傳播給其他人的歷史。在你的情況下,如果只有你有權訪問私人回購,這是可以放心的。 –
我不能只重寫GitHub回購的歷史記錄並保留BitBucket的歷史記錄?即將所有當前的更改「提交」爲單個提交? – Doug