撤消分支中的所有新提交
Undo all new commits in a branch
无意中我拉了一个远程分支feature1
进入development
1. git checkout development
2. git pull origin feature1
分支 development
比 origin/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
。
无意中我拉了一个远程分支feature1
进入development
1. git checkout development
2. git pull origin feature1
分支 development
比 origin/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
。