首先,我对此很感兴趣,但我不知道如何解决,我不想搞砸生产或掌握分支机构
这是我的情况:
Bassically,现在我在master分支大约200个提交中,我需要将它们转换为一个提交,以便清除master分支的历史。 提前致谢
PD:所有这些更改/操作/合并已经推送
答案 0 :(得分:1)
如果我理解正确,您只想保留sed -n '/:$/{s/.* \|://g;h;:foo g;N;y/./_/;s/'"'"'//g;s/ = /=/;s/\n.*env//gp;/break$/!b foo}' Jenkinsfile
分支历史记录中的最新/最后一次提交?
如果是,请遵循它。它将在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
现在,将/ master中的最新提交(您之前复制过)转到$ 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
分支,其历史记录为master
历史记录
orphan-branch
强制推送到远程。 注意:三思而后行将用您的本地/主人
取代远程/主人$ git checkout master
$ git log # should show only one commit