不建議

不建議

我已經進行了多次提交。然後我不得不回到中間的提交。在那裡進行了更改並創建了新分支。現在我想做的是跳過(刪除、刪除)所有其他提交並使用分支作為主版本。但不知道該怎麼做。

以下是對這種情況的一些解釋:

commit1 (latest)
commit2
commit3 (head pointing here)
other commits...

在 時commit3,我進行了更改並建立了新分支來推送它們。

現在我想將分支版本作為主要版本,刪除commit2commit1

答案1

既然你已經推動了,你最不可能破壞事物的選擇可能是git revert

git checkout master
git revert commit1 commit2
git merge new-branch
git push

請注意,這將導致 master 具有與 new-branch 完全相同的文件,但 commit1 和 commit2 仍將在 master 的歷史記錄中,並且還有兩個額外的提交恢復其更改。


不建議

如果你真的真的想要刪除你已經從 master 推送的提交,首先,通知你的所有隊友你可能會破壞一些東西,然後使用git reset

git checkout master
git reset --hard commit3
git merge new-branch
git push -f

--hard將從檔案系統中刪除 commit1 和 commit2 所做的所有變更。您可以用來--soft保留檔案系統中的這些更改,同時仍刪除這些提交。

您可能希望向您的隊友指出以下文件:從上游變基恢復reset --hard(當談論使用已推送的提交時,git重置指向該部分)。

相關內容