git(二) 高级操作(checkout、reset、revert、stash)

版权声明:本文为博主原创文章,转载请注明出处!!!!!!!!!! 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暂存后,自动删除

参考文章

Git分支高级管理[四]

4.1 图解 Git 命令

git 常用命令(含删除文件)
git-book

猜你喜欢

转载自blog.csdn.net/qq_21434959/article/details/83120002