git reset
切换到指定分支,这里以master为例,下面的操作都是在master 分支上操作
git checkout master
- --soft 缓存区和工作目录都不会被改变
- --mixed 默认选项。缓存区和你指定的提交同步,但工作目录不受影响
- --hard 缓存区和工作目录都同步到你指定的提交
git reset HEAD~1
介绍 :撤销commit history 中的内容
虽然在调用时加上 --hard选项可以令git reset成为一个危险的命令(译注:可能导致工作目录中所有当前进度丢失!),但本例中工作目录内的文件并不会被修改。不加选项地调用git reset并不危险——它只会修改暂存区域
注:可以用这个操作来 删除远程仓库的最近一次错误提交 示例操作:
git add .
git commit -m "提交1"
#push完成,远程仓库 commit history已经有记录了
git push
#删除最近一次的commit 操作,这个操作是在本地的,将git HEAD 指针定位到上次提交以前
git reset HEAD~1
#强制reset 的操作,在远程仓库中同步,达到删除错误push 的目的
git push --force
- 图解:
- 执行命令前:
<img src="https://ws3.sinaimg.cn/large/005AQjvJly1fvenbiduw4j30sl0g7mz2.jpg" />
- 执行命令后:
<img src="https://wx4.sinaimg.cn/large/005AQjvJly1fvendoehaaj30ti0hl0uq.jpg" />
git reset --mixed HEAD
示例操作:
git add .
git add .
#删除缓冲区add提交,工作空间不变
git reset --mixed HEAD
注:可以在执行git reset --mixed HEAD
前后调用 git status
查看状态,方便对比
git reset --hard HEAD
示例操作:
git add .
git add .
git commit -m "工作信息"
#删除 (缓冲区add提交) 、(commit history 提交)、(工作空间)
git reset --hard HEAD
注:可以在shift+alt+k
在执行前后,查看commit history
git reset --soft HEAD~1
示例:
git add .
git add .
git commit -m "工作信息"
#只是删除 (缓冲区add提交)
git reset --hard HEAD
注:可以在shift+alt+k
在执行前后,查看commit history
git reset 图解
<img src="https://ws1.sinaimg.cn/large/005AQjvJly1fveohiumbsj30sw0h3dhu.jpg"/>
git checkout
默认是从缓存(Stage)中checkout文件
#提交 已经修改过的User.java
git add src/com/uu/model/User.java
#从缓存中检出User.java, 复写工作空间的User.java
git checkout -- src/com/uu/model/User.java
git checkout -f HEAD
git add src/com/uu/model/User.java
git commit -m "工作信息"
#从master 游标中检出 User.java
git checkout -f HEAD -- src/com/uu/model/User.java
git checkout master(分支名)
切换分支
git revert
- 使用idea默认的可视化工具即可(命令行缺点:文件路径可能太长,不易操作)
git stash (暂存)
适用场景: 在master分支修改了东西,但没commit(也不想commit,可能没修改好),此时领导让你修改two分支上的bug;切换分支check out 必须要commit ,否则会丢失更改; 此时更改的做法是使用stash.
#查询主分支状态,暂存修改
git status
git stash
#切换到two分支
git checkout two
# 修改bug 略过,切换回主分支
git checkout master
# 查看暂存区
git stash list
#将暂存apply到主分支
git stash apply stash@{0}
#删除暂存
git stash drop stash@\{0\}
注:也可以使用:git stash pop
,apply暂存后,自动删除