我有一個版本庫,只有一個名為main的分支。
下面是git log --oneline --graph --all的輸出:
* 92033fe (HEAD -> main, origin/main) [test] 添加一些新測驗
* 5e281c4 [style] 改進代碼格式
* 50ccf6a 發布-1
| * 307cfba (標簽: 1.0.0) release-1
|/
* 7d734b4 [feat] 增加新功能
* 0b3c993 [fix] 修復一些測驗
這里發生的事情是,我試圖在事后將提交50ccf6a標記為1.0.0,但是做錯了,現在我有這個重復的、似乎是分支的提交307cfba,我想擺脫它,但不影響分支的其他部分。
通常情況下,我執行git rebase -i --root main,但這個特殊的提交沒有出現在提交串列中,只有那些我打算保留的提交:
pick 0b3c993 [fix] [fix] Fix some tests
pick 7d734b4 [feat] 增加新功能
pick 50ccf6a release-1
pick 5e281c4 [style] 改進代碼格式
pick 92033fe [test] 添加一些新測驗
這里發生了什么?
uj5u.com熱心網友回復:
Commit 307cfba不在main分支上。 如果你想讓它離開main分支,那很簡單:什么都不要做,因為它已經不在那里了。
Commit uj5u.com熱心網友回復: 你可以嘗試使用rebase命令的
標籤:307cfba被發現是因為標簽1.0.0。 如果你想不看到307cfba,即使使用git log --all,你需要洗掉標簽1.0.0(或強行移動它,但如果你打算這樣做,一個簡單的方法是先洗掉它,然后再次創建它)。
--onto選項(為了安全起見,在你的Repo的副本上嘗試這些步驟)。
首先洗掉你的標簽,然后在需要的提交中重新創建它。
git tag -d 1.0.0
git tag -a 1.0.0 50ccf6a
git rebase --onto 7d734b4 50ccf6a~1
