撤消分支中的所有新提交

Undo all new commits in a branch

无意中我拉了一个远程分支feature1进入development

1. git checkout development
2. git pull origin feature1

分支 developmentorigin/development 领先 N 次提交。 我无法将更改推送到 origin/development。 pull之后,我试了运行 merge --abort但是没有用

有没有办法撤消特定分支中的所有新更改(提交推送)?

git reset 应该能帮到你。你可以在你的分支上回滚提交。

假设合并是干净的并且你只有一个线性历史,然后从开发分支执行:

git reset --hard HEAD~N

将撤消开发分支上的最新 N 次提交。请小心,因为 --hard 会将它们扔掉,如果提交未在另一个分支上备份,它们将永远消失。但听起来您已经在功能分支上进行了 N 次提交。

签出分支 development 时发出以下命令:

git reset --hard origin/development

这将重置您的本地开发分支以指向与 origin/development 相同的提交(您在 pull 之前的提交)。

注意事项:如果您希望保留本地未提交的更改,请不要使用 --hard 选项。

如果您在本地开发分支上有未推送的提交,您希望保留您应该使用开发中最新提交的提交 ID 而不是 origin/development