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