簡體   English   中英

用孤兒分支重寫 master 但保留歷史

[英]Rewrite master with an orphan branch but keep history

在我的項目中,我從master分支中的很多提交開始。 在發布了幾次之后,我意識到我所采用的方法可能根本不是我們想要的。

新方法需要完整的代碼重寫,所以我決定從孤立分支( a-new-beginning-brancha-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 分支中的歷史記錄。

理想情況下,我希望以直系歷史結束,但如果這是不可能的,我也會對某種合並感到滿意。

git工作流

任何想法將不勝感激!

我不明白你為什么要保留當前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-branchmaster分支的歷史記錄

正如您所說,您可以使用--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.

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