一、git 本地提交但未提交到远程分支时,退回到提交之前,可保留提交内容也可以不保留
- 输入 git log 查看并拷贝提交的 id
- 保留提交内容:git reset 提交的id
注意:此 id 为 提交备注 下面的commit id,不是上面的id
git reset 52aff3de6e039a7960aa11d2155b5c1233f6cad1
- 不保留提交内容:git reset --hard 提交的id
注意:此 id 为 提交备注 下面的commit id,不是上面的id
git reset --hard 52aff3de6e039a7960aa11d2155b5c1233f6cad1
二、 git 代码已经提交到远程分支,退回到提交之前(注意:如果回退的分支是与其他伙伴联合开发的总分支,需要通知其他人删除本地总分支并重新拉取远程总分支,避免被其他人的原总分支代码覆盖)
- 输入 git log 查看并拷贝提交的 id
- 执行:git reset 提交的id,成功后会撤回 id 的提交,保留提交内容
git reset 52aff3de6e039a7960aa11d2155b5c1233f6cad1
- 执行:git reset --hard 提交的id,成功后会撤回 id 的提交,不保留提交内容
git reset --hard 52aff3de6e039a7960aa11d2155b5c1233f6cad1
- 执行:git push -f ,此操作会退回到 提交的id 的远程提交之前
注意:此操作会将最后一次提交到 提交的id 的远程提交中间的所有提交全部退回(退回的提交会清除提交记录),git push -f 之前不要将退回的更改内容提交
git push -f
三、 git reset 的三个选项模式
HEAD^ 代表最新的版本(代替id)
HEAD~2 代表上两个的版本(代替id)
--soft 回退到 commit 之前 git reset -–soft HEAD^
--mixed 回退到 add 之前 git reset –-mixed HEAD~2
--hard 回退到 没修改代码前(删除修改的代码) git reset --hard HEAD~3