混帐复归合并提交,并明确历史
问题描述:
首先,我readed了很多关于这一点,但我不知道如何解决,我不想搞砸了生产或主分支混帐复归合并提交,并明确历史
这是我的情况:
Bassically,现在我在主分支已经大约200提交,我需要把它们转化为只有一个承诺,要保持清醒的主分支的历史。 在此先感谢
PD:这一切都改变/操作/合并已经被推
答
如果我理解你的权利,你要只保留最新的/最后一次提交的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
如何使用'git复位--mixed承诺,hash'然后'GIT中commit'更换遥控/主? –
您想要将所有199次提交作为历史记录的一部分进行单一合并?或者你想要一个包含所有199个提交的单个修订?如果是这样的话,考虑用'''git merge --squash''' – eftshift0
我只是编辑了这个问题,这个所有的改动都已经推过了,还是有效的这个解决方案吗? – mauriblint