[英]Git rebase leaves current branch behind remote, want a cleaner commit history
我將提交內容從本地Git存儲庫定期上傳到GitHub,但是提交內容過載,並且在確定它們無用並且破壞了歷史記錄之后,我嘗試使用rebase -i
將一些提交內容壓縮在一起。
它似乎可行,所以我想將更改的提交推送到GitHub並在此處更改歷史記錄。 我得到的是我當前分支的尖端在后面。 建議的操作是從遠程存儲庫中提取更改,但是我不希望從遠程存儲中獲取更改。 我只想將本地擁有的內容發送到GitHub。
您能給我解釋一下情況,幫助實現我想要的嗎?
編輯某些推送的分支是不可行的,但是您可以這樣做。
也許您的提交日志如下所示:
o 250a32c added new information <master> <origin/master>
|
o c4f5265 added new information
|
o 168d674 added new information
|
o ca708cd some other commit
現在,您可以使用交互式變基壓縮一些提交。
git rebase -i ca708cd
將打開一個編輯器,您可以在將250a32c
和c4f5265
提交到squash
之前更改pick
。
之后,您的倉庫如下所示:
o 3e86bc4 added new information <master>
| o 250a32c added new information <origin/master>
| |
| o c4f5265 added new information
| |
| o 168d674 added new information
|/
o ca708cd some other commit
現在,您需要使用--force
將分支推送到github,因為您的master和master / origin不同步,並且無法快速轉發。
git push --force origin master
在公開發布提交后重寫歷史記錄不是一件好事。 想象其他人克隆了您的存儲庫。 如果事后更改它,它們的歷史記錄將與它們的來源不符(您的github存儲庫)。
您有幾種解決方案,可以:
嘗試繼續並更改github上的倉庫。 一種可能是完全丟棄您在github上不喜歡的分支,然后將您安排好的本地分支推送到github(silvio的“ --force”是一種更快的選擇)。
完全刪除該存儲庫,然后再次將本地存儲庫克隆到github。
與不太漂亮的提交一起生活(首選解決方案)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.