git commit后 push到远程仓库 后悔药

git commit后 push到远程仓库 后悔药

别名命令

git config --global alias.hist ‘log --pretty=format:"%C(auto)%h %ad | %C(auto)%s%d %Cblue(%an)" --graph --date=short’
alias.别名
git reflog 可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)

使用git relog 查看提交id

(hist 是起了别名的自定义命令)
在这里插入图片描述

本地还原,取消commit和add

在这里插入图片描述

此时push 会报错

在这里插入图片描述

使用git push origin master --force-with-lease 强制推送覆盖远程仓库,相当于还原到上一个版本

在这里插入图片描述

git push --force 或git push --f 不安全的强制推送

–force-with-lease 参数自 Git 的 1.8.5 版本开始提供,只在解决 git push --force 命令造成的安全问题。
那么 git push --force 命令有什么安全问题?
–force 会使用本地分支的提交覆盖远端推送分支的提交。也就是说,如果其他人在相同的分支推送了新的提交,你的这一举动将“删除”他的那些提交!就算在强制推送之前先 fetch 并且 merge 或 rebase 了也是不安全的,因为这些操作到推送之间依然存在时间差,别人的提交可能发生在这个时间差之内。
–force-with-lease 将解决这种安全问题
使用了 --force-with-lease 参数之后,上面那种安全问题就没有那么危险了。
使用此参数推送,如果远端有其他人推送了新的提交,那么推送将被拒绝,这种拒绝和没有加 --force 参数时的拒绝是一样的。

发布了31 篇原创文章 · 获赞 8 · 访问量 1531

猜你喜欢

转载自blog.csdn.net/qq_37126480/article/details/103671513