如何 delete/clear 来自拉取请求的旧提交历史记录?
How to delete/clear old commit history from pull request?
在拉取请求并从我的远程原始分支合并到上游后,我从远程删除了该分支,但我重命名了本地分支并继续处理它(我认为这就是我搞砸的原因) .当我将这个本地分支提交到远程源并向上游进行拉取请求时,我的第一个拉取请求的提交也出现了。
有没有办法从此拉取请求中删除旧的提交历史记录?
或者我必须关闭这个 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 更新了更短的历史记录。
在拉取请求并从我的远程原始分支合并到上游后,我从远程删除了该分支,但我重命名了本地分支并继续处理它(我认为这就是我搞砸的原因) .当我将这个本地分支提交到远程源并向上游进行拉取请求时,我的第一个拉取请求的提交也出现了。
有没有办法从此拉取请求中删除旧的提交历史记录?
或者我必须关闭这个 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 更新了更短的历史记录。