簡體   English   中英

Git rebase將當前分支留在遠程后面,想要更清晰的提交歷史記錄

[英]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

將打開一個編輯器,您可以在將250a32cc4f5265提交到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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM