
我已經進行了多次提交。然後我不得不回到中間的提交。在那裡進行了更改並創建了新分支。現在我想做的是跳過(刪除、刪除)所有其他提交並使用分支作為主版本。但不知道該怎麼做。
以下是對這種情況的一些解釋:
commit1 (latest)
commit2
commit3 (head pointing here)
other commits...
在 時commit3
,我進行了更改並建立了新分支來推送它們。
現在我想將分支版本作為主要版本,刪除commit2
和commit1
。
答案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重置指向該部分)。