繁体   English   中英

Git恢复合并提交并清除历史记录

[英]Git revert merge commit and clear history

首先,我读了很多关于此的内容,但是我不确定如何解决,我不想搞砸生产或主分支

这是我的情况:

在此处输入图片说明

基本上,现在我在master分支中大约有200次提交,我需要将它们转换为一次提交,以保持master分支的历史记录清晰。 提前致谢

PD:所有这些更改/操作/合并已被推送

如果我理解正确,那么您只想保留master分支历史中的最新/最后一次提交?

如果是,则遵循它。 它将在git log仅提交一次即可创建一个新的master 请注意 ,您的工作树将相同,但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  

现在,将/ master的最新提交(您之前复制的)选择/ cherry-pick到orphan-branch

$ git cherry-pick <commit-hash>

现在, orphan-branch分支在git log只有一次提交。 删除本地master分支

$ git log
$ git branch -D master

创建具有orphan-branch历史记录的新本地master分支

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

强制推送到远程。 注意:请三思而后行,它将用您的本地/主服务器替换远程/主服务器

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM