如何用git重写历史?

如何用git重写历史?,git,Git,我克隆了一个项目存储库并对其进行了一些提交。这些地方相当肮脏;我一路上把标签空间搞砸了,还扔了一些垃圾。所以在提出拉拽请求之前,我想把东西整理一下。我认为最好的方法是在origin/master创建一个新分支,然后将来自旧分支的提交逐个应用于工作副本,并对新分支执行干净的提交 那么,如何将来自其他分支的提交应用于工作副本呢? 这是最好的方法吗?这样的任务似乎很常见,也许已经有了一个既定的工作流程和工具来完成这些任务?假设工作树是这样的: 并且您只想将应用于g-h到原点/master。首先,使用

我克隆了一个项目存储库并对其进行了一些提交。这些地方相当肮脏;我一路上把标签空间搞砸了,还扔了一些垃圾。所以在提出拉拽请求之前,我想把东西整理一下。我认为最好的方法是在
origin/master
创建一个新分支,然后将来自旧分支的提交逐个应用于工作副本,并对新分支执行干净的提交

那么,如何将来自其他分支的提交应用于工作副本呢?
这是最好的方法吗?这样的任务似乎很常见,也许已经有了一个既定的工作流程和工具来完成这些任务?

假设工作树是这样的:

并且您只想将应用于
g-h
原点/master
。首先,使用
origin/master
创建一个新分支,并仅为提交
h
创建另一个分支:

git checkout -b new-branch origin/master
git checkout -b daughter-branch h
现在,从
g
开始应用提交

git rebase --onto new-branch g^

请参阅-您正在有效地查找的命令是。我不想只是sqash我的提交(如提供的答案所示);我想先编辑每个提交,然后再应用它来修复它。这是相同的过程,并且仍然使用rebase。(试一下/在评论之前读一下)。啊,我明白了。首先阅读手册是件好事。谢谢你,我想这就是答案。看到了吗