混帐复归合并提交,并明确历史

问题描述:

首先,我readed了很多关于这一点,但我不知道如何解决,我不想搞砸了生产或主分支混帐复归合并提交,并明确历史

这是我的情况:

enter image description here

Bassically,现在我在主分支已经大约200提交,我需要把它们转化为只有一个承诺,要保持清醒的主分支的历史。 在此先感谢

PD:这一切都改变/操作/合并已经被推

+0

如何使用'git复位--mixed承诺,hash'然后'GIT中commit'更换遥控/主? –

+0

您想要将所有199次提交作为历史记录的一部分进行单一合并?或者你想要一个包含所有199个提交的单个修订?如果是这样的话,考虑用'''git merge --squash''' – eftshift0

+0

我只是编辑了这个问题,这个所有的改动都已经推过了,还是有效的这个解决方案吗? – mauriblint

如果我理解你的权利,你要只保留最新的/最后一次提交的master分支历史?

如果是,则按照它。它将创建一个新的master,只有一个提交git log注意您的工作树将相同,但master历史将被清除(只保留最新的提交)。

首先备份您的master分公司安全

$ git branch master.bac  # new branch called master.bac = master 

复制master分支的最新提交哈希

$ git log # copy the latest commit (top commit) 

返回一个承诺,并创建一个没有犯下史上一个新的orphan(新枝)分支。

$ git checkout HEAD~1     # back to one commit 
$ git checkout --orphan orphan-branch 

现在采取/樱桃采摘最新提交(你以前复制)主进orphan-branch。现在

$ git cherry-pick <commit-hash> 

orphan-branch分支中只有一个git log提交。删除本地master分支

$ git log 
$ git branch -D master 

orphan-branch历史

$ git checkout master 
$ git log     # should show only one commit 

力推远程历史创建新的本地master分支。 注:三思而后行会与当地/主

$ git push -f origin HEAD # replace your remote/master with local/master