怎样撤消Commit但没有Push的代码
方法一:简单
- 点击菜单栏:local>undo las commit:
代码状态变化:state :staged modified - 点击工具栏:unstage
代码状态变化:state :modified - 点击工具栏:Discard
代码状态变化:state :unchanged
- 点击菜单栏:local>undo las commit:
方法二:稍复杂
- 点击菜单栏:local>reset选择上一次的commit,有三种选择soft –mixed –hard,默认为mixed,区别见文末。
代码状态变化:state :modified - 点击工具栏:Discard
代码状态变化:state :unchanged
- 点击菜单栏:local>reset选择上一次的commit,有三种选择soft –mixed –hard,默认为mixed,区别见文末。
怎样撤消已经Push的代码
方法一:Revert ,撤消操作会作为新的commit提交并Push,他人会看到两次提交。
在log中选中已经提交的commit,点击revert>revert & commit
执行Push方法二:reset 撤消后之前的commit他人不会看到。但是需要格外小心,只撤消最近一次的commit,以免误操作,尤其是团队项目。
- 点击菜单栏:local>reset选择上一次的commit,有三种选择soft –mixed –hard,默认为mixed,区别见文末。
代码状态变化:state :modified(在mixed 模式下,便于修改后可以再次提交。) - 此时执行Push,会弹出提示框:说明需要打开git 命令执行进行操作,
SmartGit中可以点击Tools>Open Git-Shell
输入git push origin HEAD –force (强制执行最近一次提交)
- 点击菜单栏:local>reset选择上一次的commit,有三种选择soft –mixed –hard,默认为mixed,区别见文末。
PS:
根据–soft –mixed –hard,会对working tree和index和HEAD进行重置:
git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息
git reset –soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
git reset –hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容