[英]How to rewrite the master branch history to other Repository master branch
[英]Rewrite master with an orphan branch but keep history
在我的項目中,我從master
分支中的很多提交開始。 在發布了幾次之后,我意識到我所采用的方法可能根本不是我們想要的。
新方法需要完整的代碼重寫,所以我決定從孤立分支( a-new-beginning-branch
) a-new-beginning-branch
。 我喜歡它,最終,它成為了我事實上的 master 分支。 現在我想用a-new-beginning
替換master
。
我已經找到了如何使當前的 Git 分支成為主分支,但是當按照那里顯示的步驟進行操作時,我收到了fatal: refusing to merge unrelated histories
的錯誤消息fatal: refusing to merge unrelated histories
。 我知道我可以使用–allow-unrelated-histories
選項,但我真的不明白它的作用,也不想破壞事情。
我還找到了如何用孤立分支覆蓋 master 分支,但我不想刪除 master 分支中的歷史記錄。
理想情況下,我希望以直系歷史結束,但如果這是不可能的,我也會對某種合並感到滿意。
任何想法將不勝感激!
我不明白你為什么要保留當前master
分支的當前歷史記錄,以及a-new-beginning
。
如果您的目標只是擁有一個名為master
的分支,其中包含您a-new-beginning
分支的歷史記錄,則可以通過以下方式執行:
git branch -m master master-backup
git push origin :master master-backup
git branch -m a-new-beginning master
git push origin :a-new-beginning master
這樣,您將在本地和遠程更新分支。
你有沒有嘗試在你的新分支中重新設置你的主人?
1- $ git checkout a-new-beginning-branch
2- $ git rebase master
您的新分支現在包含a-new-beginning-branch
和master
分支的歷史記錄
正如您所說,您可以使用--allow-unrelated-histories
。 此選項允許在沒有常見提交時合並數據。 在這種情況下, 如何使當前的 git 分支成為主分支討論看起來是我們更好的解決方案。
我們可以這樣做:
git checkout better_branch
git merge --allow-unrelated-histories --strategy=ours master # keep the content of this branch, but record a merge
git checkout master
git merge better_branch # fast-forward master up to the merge
Fist 合並獲取與舊 master 的新分支的相關歷史記錄。 第二次合並將新的分支數據作為主數據。
您可以使用git diff master..better_branch^
檢查合並是否正常。 差異應該是空的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.