我很难掌握如何使用rebase/revert来实现这一目标.
我正在我的master分支上工作,经过一定的提交,我的软件停止工作.我不想放弃当时所做的更改,我按时达到了里程碑的压力,所以我回去了几个提交git checkout并创建了一个新的分支,working并开始推动我所有的更改.后来我意识到master不需要这些变化(在分支上进行).现在我想回到我的主分支并在我用于创建working分支的提交之后删除所有提交,然后将我的working分支合并到master分支.
我用在线照片编辑器创建了一个图像,试图解释我正在尝试做什么.我希望它有所帮助:

我希望在5cb967f之后保留所有内容.摆脱5cb967f和a0c1de2之间的一切(不包括那些)
djs*_*djs 17
您有两种选择:
重写历史(破坏性)
您可以使用git-rebase重写历史记录,省略这些提交.您可以运行交互式rebase.从你的描述,我不能确定到底是什么,你有master和working,但我假设所有的历史(有用和无用)是目前.
git checkout master
git rebase -i a0c1de2
Run Code Online (Sandbox Code Playgroud)
此时,您$EDITOR将弹出一个提交a0c1de2到HEAD的提交列表master.您可以删除对应的行以c460070..a3cb10e从历史记录中删除它们.
您的历史记录将在本地重写.如果您尝试推送此更改,则将是非快进更新.
恢复,保存历史(非破坏性)
如果您希望保留历史记录,则可以恢复一系列提交:
git checkout master
git revert c460070..a3cb10e
Run Code Online (Sandbox Code Playgroud)
这将创建7个新提交,每个提交按顺序恢复这些不需要的提交中的更改.