版权声明:本文为博主原创文章,转载请注明出处!!!!!!!!!! https://blog.csdn.net/qq_21434959/article/details/83120002
layout: blog
istop: true
title: “idea git 高级操作(checkout、reset、revert)”
date: 2018-09-18
category: 版本控制
tags:
- 版本控制
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
- 图解:
- 执行命令前:
- 执行命令后:
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 图解
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暂存后,自动删除