簡體   English   中英

如何從git中已經推送的分支中刪除所有提交?

[英]How to remove all commits from already pushed branch in git?

在與很多團隊成員一起完成一個項目的過程中,我們現在正在嘗試完善我們的工作方式。 目前,所有工作都在幾年前從master分支出來的integration分支中完成。 由於一個或另一個原因,在master分支中完成了約600次提交,但未合並到集成中,而在集成中完成了約1200次未合並到master分支中的提交。 所有發行版均完全來自集成分支,一年沒有一次接觸master分支。 我們希望將master分支用作我們的穩定分支,但為此,我們需要合並integration所有更改,而不要將任何分散的更改保留在master中。

有沒有頭痛的方法可以從master分支中刪除“無效”提交? 還是我們應該簡單地創建一個新的存儲庫或另一個當前集成位置的穩定分支?

更新不幸的是,非快速轉發和遠程分支刪除被拒絕了,我仍在等待存儲庫托管負責人的答復。 我以為要改變它並不容易,可悲的是這是一個大公司。

如果您不能進行遠程刪除,那么最簡單的方法是:

git checkout integration
cp -a . ../integration-source
rm -rf ../integration-source/.git
git checkout master
mv .git ../integration-source
cd ../integration-source
git add --all
git commit -m"massive commit to make master identical with integration"
git push
cd ..
rmdir projectdirname
mv integration-source projectdirname

當當!

如果可以進行遠程刪除:

git push --force origin integration:master

您應該能夠git reset --hard master分支回到最初創建集成分支的位置。 這將使您保持最初分支時的狀態,本質上是“刪除”將來提交給主節點的信息。

那時,您可以將集成分支合並到master,它們將是相同的。 實際上,我認為這將是一個沒有沖突的快速合並。

要查找原始分支點,可以使用git merge-base master integration 看看這個Stack Overflow問題,以獲取更多想法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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