工具 :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. input text 去掉标签下拉提示autocomplete

    autocomplete 属性 autocomplete 属性规定输入字段是否应该启用自动完成功能. 自动完成允许浏览器预测对字段的输入.当用户在字段开始键入时,浏览器基于之前键入过的值,应该显示出在 ...

  2. unity3d之NGUI学习流水账

    博主是跟着视频教程学的,所以最新版的u3d是否已经自带这个功能博主没有考究过. 但是视频是2015下半年的教程,当时的u3d还是需要自行导入NGUI包的. 1.首先需要下载NGUI包.点此进入ngui ...

  3. C语言之指针基础概念

    今天就写一下关于C语言指针的一些感想吧. 很多同学都搞不懂指针,我一开始也云里雾里没看懂指针,而且老师又把指针说得很难的样子.其实主要是把指针”*“的作用给弄混了,不用畏惧,细心点看就可以了. 首先简 ...

  4. SQL操作语句之查询及删除重复记录的方法

    delete from 表 where id not in(select min(id) from 表 group by name ) //删除重复名字的记录 删除之前请用语句 select * fr ...

  5. 集成讯飞听写iOS sdk到unity遇到的问题:weak成员和strong成员

    在unity里集成讯飞语音听写iOS sdk的过程中,遇到一个问题,官方的demo中可以将多次onResults回调返回的结果累积拼接起来组成一个完整的结果,而我集成过来以后就不能累积了,只拿到最后一 ...

  6. DB2字符处理函数

    转自:http://www.blogjava.net/bingle/archive/2007/07/11/129681.html ----------------------------------- ...

  7. Java Web框架play framework的下载与环境变量配置

    Web项目的开发有着众多的框架,近期刚刚接触了play. 对于一个Java开发者来说,play是一个不可多得的好框架.以下我简介下怎样下载play .以及play的环境变量配置方法. (1)登录pla ...

  8. 1.Vector(向量容器)

    一.概述 Vectors 包含着一系列连续存储的元素,其行为和数组类似.访问Vector中的任意元素或从末尾添加元素都可以在常量级时间复杂度内完成,而查找特定值的元素所处的位置或是在Vector中插入 ...

  9. JS高程3:面向对象的程序设计——理解对象

    JS中对象的定义: (无序)属性的集合 (无序)值的集合 (无序)名值对的集合 JS对象是基于引用数据类型来创建的. JS对象创建的2种方式: 传统方式 对象字面量 var person = new ...

  10. HTTP Range header

    http://stackoverflow.com/questions/3303029/http-range-header *************************** 58 down vot ...