一个类似的问题How to cherry-pick multiple commits假设提交是连续的。
我有一个作为 tarball 下载的模块。我已将它包含在我的主项目的 git 存储库中并对其进行了更改。这些更改散布在主项目的其他提交中。
我已经意识到我的方式的错误,并想用 git 子模块替换模块。我可以添加当前状态,但我想保留我的 git 历史记录。
如何将每个单独的提交移到我的新仓库中?
我想我可以用cherry-pick来做到这一点,但这很耗时。这是我所拥有的:
使用主项目作为远程设置我的新存储库(这样我就可以挑选):
cd ~/snippets
git remote add main ~/.vim/
git fetch main
我可以在主项目中看到相关的提交git log ~/.vim/snippets
我可以制作一个脚本来挑选樱桃
cd ~/.vim/snippets
git log --oneline --reverse --format="format:git cherry-pick %h #%s" .
但是如果我运行脚本,就会出现合并冲突。在我解决合并和提交后,我需要从我的樱桃挑选脚本中删除成功的位并再次运行它。我想自动执行此操作,例如 git rebase。