2012-06-03 77 views
5

我一直在研究一個私人回購,並將發佈到GitHub。Git - 通過單一整合提交推送到新的遠程

問題是我有很多很多的提交,並且爲了衛生的緣故,我想只有一個提交出現在GitHub中。

如何在不推送歷史的情況下推送?即鞏固整個MASTER成一個單一的承諾

非常感謝提前。

Doug

回答

1

查看git rebase。交互模式。

5

通常會使用git rebase --interactive HEAD~n其中n是否。你想合併成一個提交。然而,在你的情況下,你想把整個歷史壓縮成一個單獨的提交,並且因爲沒有父級(直到初始提交)的重新綁定是不可能的,所以我們必須使用git resetgit commit --amend

這裏就是你要做的:

  1. git log --oneline。找到您的初始提交的SHA。
  2. 假設我們的SHA是fe7d5d1。運行git reset fe7d5d1。這會將分支重置爲初始提交。
  3. 現在使用git add .來進行所有更改。
  4. 接下來修改你的初始提交,git commit --amend -m "Initial commit"
  5. 確認您現在只有一個提交git log --oneline

小心:永遠不會改寫/壓扁/重新綁定提交您已經推送到遠程回購。

+1

如果我把整個歷史推向bitbucket的私人回購,但只是想將當前狀態(即重新發布)推向github,該怎麼辦? – Doug

+1

這個想法永遠不會改寫已經傳播給其他人的歷史。在你的情況下,如果只有你有權訪問私人回購,這是可以放心的。 –

+0

我不能只重寫GitHub回購的歷史記錄並保留BitBucket的歷史記錄?即將所有當前的更改「提交」爲單個提交? – Doug

相關問題