idea git 高级操作(checkout、reset、revert)

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暂存后,自动删除

猜你喜欢

转载自blog.csdn.net/Tybyqi/article/details/86496929
今日推荐