工具 :vs2017 git 操作
背景:本地与远程分支同步
操作:还原、挑拣、重置--hard 、重置--mixed
分支:本地1、本地2、origin\本地1
 

基本操作
1:分支:本地2-add something like //testthis function 提交
2:checkout 本地1 后,本地2分支合并入本地1分支,同步\origin。
3:本地1分支add something like //testthis2 function 提交,同步\origin。
------------------完成操作---------进行试验-----------------

1:还原
对本地1 中 合并本地2 的提交1进行还原,发现本地1 中没了//testthis function
结论:还原针对的是某一次提交的所有commit,做了反向操作,新生成一个commit覆盖了这个操作。
后续,再次合并本地2 进入本地1 无法将//testthis function 新增,证明了反向操作的存在。
2:挑拣
还原本地2的提交后,对本地2的提交进行挑拣操作,发现代码又出现了。
结论:挑拣是针对两次commit之间不同代码的比对,后进行合并不同的代码。且针对的也是某一次提交。
3:重置--hard
假设目前有三次提交A-B-C,对A进行“重置--hard”后发现本地1的代码回到了A。参考https://www.cnblogs.com/kidsitcn/p/4513297.html
结论重置--hard 将我们的head、index、工作区代码全部回滚到A。
但是需要注意的origin\中的内容并不会修改,本地如果现在直接“同步”操作后,做的重置--hard操作又没用了。
 
4:重置--mixed
假设目前后三次提交A-B-C,对于A进行“重置--mixed”后发现本地代码没变,
但是head、index发生了更变,本地代码没变!自己可以修改本地代码后再次提交,但是对比的head、index不同了。
以下是另外一个博主给出的解释:
所有该branch上从original HEAD(commit)到你重置到的那个commit之间的所有变更将作为local modifications保存在working area中,(被标示为local modification or untracked via git status),但是并未staged的状态,你可以重新检视然后再做修改和commit。

附录:
  • HEAD
这是当前分支版本顶端的别名,也就是在当前分支你最近的一个提交
  • Index
index也被称为staging area,是指一整套即将被下一个提交的文件集合。他也是将成为HEAD的父亲的那个commit
  • Working Copy
working copy代表你正在工作的那个文件集

vs2017 git 操作重置、还原、挑拣对比的更多相关文章

  1. Git Book 中文版 - Git的撤消操作 - 重置, 签出 和 撤消

    Git Book 中文版 - Git的撤消操作 - 重置, 签出 和 撤消 Git的撤消操作 - 重置, 签出 和 撤消 Git提供了多种修复你开发过程中的错误的方法. 方法的选择取决于你的情况: 包 ...

  2. GIt后悔药:还原提交的操作(谨慎操作)

    一.背景: 偶尔会遇到git的版本分支的文件被误改的情况,需要还原,此篇文章可能会帮助到你. PS: 来理解下 Git 工作区.暂存区和版本库概念,可以更好的理解以下的还原操作. * 工作区:就是你在 ...

  3. Git操作指令进阶

    注意: 学习前请先配置好Git客户端 相关文章:Git客户端图文详解如何安装配置GitHub操作流程攻略 官方中文手册:http://git-scm.com/book/zh GIT 学习手册简介 本站 ...

  4. 转 git操作小结

    UNDER MIT LICENSE. 公司几乎所有的项目都是使用 git 仓库来管理代码,以前对 git 只有些肤浅的了解,每次提交代码或者上线的时候总是会提心吊胆,生怕出现一些未知的问题.经过三个月 ...

  5. Git 代码版本还原方法

    因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.请访问我的个人网站获取这篇文章的最新内容,Git 代码版本还原方法 在使用 Git 管理自己的代码和资料时,难免会遇到意料 ...

  6. git操作整理

    昨天手残 然后在GitHub for windows 上点了revert 然后就给重置了 更手残的是又给同步了 .  但是 GitHub 会保留之前的版本 . 只要删掉本次修改就可. 解决方案:  g ...

  7. webstorm的git操作使用

    0. 前言 在上一篇文章中,讲述了使用webstorm去调试node程序,最近研究了一下如何使用webstorm去操作git. 对于git的使用,大家的使用方式均有不同,最王道的方式非命令行莫属,基于 ...

  8. git操作笔记

    首先本文参考廖雪峰的git学习教程,写的非常好,值得学习. http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b80 ...

  9. 关于git 操作

    一. Git 命令初识 在正式介绍Git命令之前,先介绍一下Git 的基本命令和操作,对Git命令有一个总体的认识 示例:从Git 版本库的初始化,通常有两种方式: 1)git clone:这是一种较 ...

随机推荐

  1. javascript常量的定义

    例如可以使用 const PI = 3.14159265; 一般不推荐使用 const 关键字,因为它不是 ECMAScript 语法的一部分.当需要常量的时候一般是以命名习惯来约束的,亦即使用大写字 ...

  2. 无法删除尚未附加的实体-linq中使用反射删除记录出现错误,应该如何解决。

    db.airports.Attach(data); db.airports.DeleteOnSubmit(data); db.SubmitChanges();

  3. Android studio 使用心得(一)—android studio快速掌握快捷键

    大家都是从eclipse转过来了,所以早就熟悉了eclipse那一套快捷键. File—>settings—>keymap–>选择eclipse就搞定 话是这么说,但是自动化提示的变 ...

  4. poj 2391 Ombrophobic Bovines, 最大流, 拆点, 二分, dinic, isap

    poj 2391 Ombrophobic Bovines, 最大流, 拆点, 二分 dinic /* * Author: yew1eb * Created Time: 2014年10月31日 星期五 ...

  5. C语言 文件操作

    /** *@author cody *@date 2014-08-09 *@description copy text file * FILE *fopen(filename,openmode) * ...

  6. 一.软件介绍(apache lighttpd nginx)

    一.软件介绍(apache  lighttpd  nginx) 1. lighttpd Lighttpd是一个具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点.lighttpd是众多 ...

  7. Atitit.sql where条件表达式的原理  attilax概括

    Atitit.sql where条件表达式的原理  attilax概括 1. 数据查询接口sql api标准化1 2. Sql接口的问题2 2.1. 虽然sql是结构化的dsl,但是任然是编程语言类型 ...

  8. 使用Django框架

    1.安装Django 在命令行模式下使用pip工具来安装Django,pip工具的安装方法见此篇 pip install django 2.确认是否安装成功 在Python交互模式下 import d ...

  9. Java监听模式

    说明 生活中,监听无处不在.比如说,手机播放音乐功能,也是一种监听:你不点击播放按钮,手机就不放歌,当你点击时,手机就播放音乐.即触发某种行为,便执行相应的动作. 组成 Java监听模式右三个部分组成 ...

  10. spring-test使用介绍

    一.首先引入spring的jar文件到项目中,我采用maven管理项目依赖的jar包: <properties> <spring.version>4.0.0.RELEASE&l ...