我正在從事一個專案,其中原始開發人員為每個新版本創建了 .tar.gz。我采用了最新版本,將其放入 .git 中,并在其上添加我的補丁。
經過這幾個月的多次提交和修改,老開發者讓我做維護者,放到github上。我想要 rebase,所以所有舊的 .tar.gz 版本都作為單個提交存在,然后將我的提交放在那些之上,以將舊版本保留在 git 歷史記錄中,但保留我現有的提交歷史記錄。
(由于這是有史以來第一個通過 git 公開推送的提交,我不在乎用 rebase 破壞 git-hash 歷史記錄。)
這個解釋有兩個 .git 樹:帶有單一提交 .tar.gz 的舊歷史樹,我稱之為“歷史”,另一個我稱之為“新”,我的提交需要出現在所有歷史提交之上。為此,我嘗試了以下操作:
第 1 部分,準備歷史樹:
- 啟動了一個歷史性的 .git 樹
git init - 一次提交一個 .tar.gz 并附上發布評論
第 2 部分,嘗試將歷史樹變基為遠程:
- 在“新”樹上,我做了一個
git remote add historical /path/to/historical-tree - 去了一個臨時測驗分支
git checkout -b before-historical-rebase - 試過
git rebase historical - 有很多標記為“已修改”和一些“被我洗掉”的合并沖突
我認為因為最后一個 .tar.gz 的結尾與我第一次提交的開始相同,這將是干凈的,但是我在最后一個 .tar.gz 版本的邊界處的提交歷史和我的第一次提交不是'沒有我想象的那么干凈,或者有更好的方法來做到這一點。
你會如何處理這個問題?
uj5u.com熱心網友回復:
如果我理解正確:
- 您的本地開發歷史如下所示:
* eacfdd14 (HEAD -> master) commit
* eabddd13 commit
* eaacdd12 commit
* ea0bdd11 2.2 latest version from tar.gz
- 并且您想將其重新設定為:
* cd22dfaf (historical) 2.2 latest version from tar.gz
* cd21dfae 2.1 version from tar.gz
* cd20dfad 2.0 version from tar.gz
* cd11dfac 1.1 version from tar.gz
* cd10dfab 1.0 first version from tar.gz
為避免重播最初的“來自 tar.gz 的 2.2 最新版本”提交,請使用git rebase以下引數:
git rebase --onto historical ea0bdd11 master
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/346742.html
