如何 delete/clear 来自拉取请求的旧提交历史记录?

How to delete/clear old commit history from pull request?

在拉取请求并从我的远程原始分支合并到上游后,我从远程删除了该分支,但我重命名了本地分支并继续处理它(我认为这就是我搞砸的原因) .当我将这个本地分支提交到远程源并向上游进行拉取请求时,我的第一个拉取请求的提交也出现了。

  1. 有没有办法从此拉取请求中删除旧的提交历史记录?

  2. 或者我必须关闭这个 pull request 并将本地分支 rebase 到上游,然后再做另一个 pull request?

如果您的更改尚未推送,您可以简单地使用

git reset --hard HEAD~1

或者,如果您已经推送更改,则可以使用此命令

git push origin HEAD --force 

如果您是从旧分支(这里是 PR 分支)开始工作,请将您的提交移至上游目标分支(例如,原始回购 main 分支)

cd /path/to/repo
git remote add upstream https://github.com/<origina>/<repo>
git fetch upstream

你从

开始
   old PR
     |
--x--x--Y--y--y (newBranch)
      \
       m--m--m (upstream/main, updated by the fetch)

快速变基:

git switch myNewBranch
git rebase --onto upstream/main firstNewCommit^1 myNewBranch

这给出:

   old PR
     |
--x--x
      \
       m--m--m (upstream/main)
              \
               Y'--y'--y' (newBranch)

A git push --force 并且您的新 PR 更新了更短的历史记录。