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 是起了别名的自定义命令)
git commit后 push到远程仓库 后悔药

本地还原,取消commit和add

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

此时push 会报错

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

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

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

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 参数时的拒绝是一样的。