场景一: 已经用git add 命令把文件加入到暂存区了,这个时候想退回怎么办?

  添加文件到暂存区 :git add .

  将单个文件撤回到工作区:git rm --cached [文件路径]

  将目录撤回到工作区:git rm -r --cached [文件目录]

或者使用 git reset HEAD

场景二:如果想退回并且在硬盘上删除这个文件

  git rm -f [文件路径]

场景三:回退到上一个版本

  添加文件到暂存区 :git add .

  提交文件:git commit -m '第一次提交'

  回退到上一个版本:git reset HEAD^

场景四:回退到某个版本的add过的状态

  已经commit过的文件,想回退到add之后的状态: git reset --soft [提交版本号]

场景五:直接将HEAD指向这个commit

  git reset --hard [提交版本号]

场景六:commit之后发现漏了几个文件没有添加,或者提交信息写错了。

  git commit -m 'initial commit'

   git add [forgotten_file]

   git commit --amend

或者用 git commit -a -m 'added new benchmarks' 这一条命令搞定

场景七:git log操作

$ git log 查看所有commit信息
$ git log --pretty=oneline 更简洁的查看log信息(只有commit号和描述信息)
$ git reflog 查看所有的git操作过的命令,可以找到删除了的commit号
$ git log --graph 查看分支合并图
$ git log -p pt_basicline/src/main/webapp/WEB-INF/views/hospitalMange/hosmange.vm 显示每次提交的内容差异
$ git log -2 pt_basicline/src/main/webapp/WEB-INF/views/hospitalMange/hosmange.vm 显示最近两次提交
$ git log -2 pt_basicline/src/main/webapp/WEB-INF/views/hospitalMange/hosmange.vm
$ git log -stat 看到每次提交的简略的统计信息

场景八:在git中对文件改名

  git mv file_from file_to

场景九:分支切换暂存修改过的代码

  我们在A分支上面进行开发,开发到一半,老板突然说要去做另一个任务,要在B分支上开发。这个时候我不得不把在A分支上开发了一半的代码做commit操作然后切换到B分支上面。这样做就会在git log中多出了

很多不必要的提交日志。我们可以用git stash命令暂时把A分支上面未开发完的代码压入栈中暂时做个备份。

  命令预览:

  git stash : 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。

  git stash save 'test': 添加注释

  git stash pop: 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。

  git stash list: 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。

  git stash clear: 清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。

  git stash apply stash@{1} 恢复制定版本的备份。

  实战:

  1、在A分支上修改了代码,用git status看一下

  2、用git stash 把修改过的代码压入栈备份。然后再用git status看一下。我们看到暂存区没有修改过的文件了。然后切换其他分支工作,工作好之后切换回来恢复修改过的代码

  3、先用 git stash list 看一下git栈内所有的备份

  4、用git stash apply stash@{0} 选择要恢复的版本 

  5、再git stash list 看一下

  6、还是有4个栈备份,我们用 git stash clear清理一下,然后再用 git stash list 看一下。发现什么都没有了

  7、我们再git stash 然后 git list 看一下

  8、用 git stash pop 试一下

参考:

  廖雪峰官网

  博客,http://www.cppblog.com/deercoder/archive/2011/11/13/160007.aspx

Git-基本操作(图文)的更多相关文章

  1. Git学习系列之Git基本操作拉取项目(图文详解)

    前面博客 Git学习系列之Git基本操作推送项目(图文详解) 当然,如果多人协作,或者多个客户端进行修改,那么我们还要拉取(Pull ... )别人推送到在线仓库的内容下来. 大神们是不推荐使用 pu ...

  2. Git学习系列之Git基本操作推送项目(图文详解)

    前面博客 Git学习系列之Git基本操作提交项目(图文详解) 如果完成到一定程度,那么可以推送到远端在线仓库. 推送之前,请确保你已经设置了全局的 user.name 和 user.email, 如果 ...

  3. Git学习系列之Git基本操作提交项目(图文详解)

    前面博客 Git学习系列之Git基本操作克隆项目(图文详解) 然后可以 cd 切换到 LispGentleIntro 目录, 新增或者修改某些文件.这里只是模拟一下操作, 实际情况可能是 使用 Ecl ...

  4. Git学习系列之Git基本操作克隆项目(图文详解)

    不多说,直接上干货! 想必,能进来看我写的这篇博文的朋友,肯定是了解过. 比如SVN的操作吧,最常见的是 检出(Check out ...), 更新 (Update ...), 以及 提交(Commi ...

  5. Git基本操作和GtHub 特殊技巧

    <GitHub 入门与实践> 笔记 了解GitHub Git 和 GitHub 的区别 在Git中,开发者将源代码存入名为"Git仓库"的资料库中,并加以使用.而Git ...

  6. Git-Runoob:Git 基本操作

    ylbtech-Git-Runoob:Git 基本操作 1.返回顶部 1. Git 基本操作 Git 的工作就是创建和保存你项目的快照及与之后的快照进行对比.本章将对有关创建与提交你的项目快照的命令作 ...

  7. 学习如何运用GitHub网站+出现的问题+Git基本操作总结

    首先介绍一下GitHub网站: github是一个基于git的代码托管平台. GitHub 拥有一个非常鼓励合作的社区氛围.这一方面源于 GitHub 的付费模式:私有项目需要付费,而公共项目完全免费 ...

  8. Git基本操作(Windows下)

    在开始使用Git之前,我觉得是很有必要了解下Git与其他版本控制系统的差异与文件在Git中的三种状态.可以到下面这个网站看下:Git详解之一 Git起步,了解之后,可以对Git的基本操作有一个更清晰的 ...

  9. git基本操作及上传代码到gitHub

    1.基本配置: 配置用户名:git config --global user.name" "; 配置邮箱:git config --global user.email " ...

  10. Git——基本操作

    Shell 基本概念 shell俗称壳,为使用者提供使用界面,例如DOS下command以及后来的cmd.exe shell分类 图形界面shell,提供友好的可视化界面,例如windows操作界面, ...

随机推荐

  1. dos常用命令使用说明

    cd 改变当前目录 sys 制作DOS系统盘 copy 拷贝文件 del 删除文件 deltree 删除目录树 dir 列文件名 diskcopy 制磁盘 edit 文本编辑 format 格式化磁盘 ...

  2. 极小极大搜索方法、负值最大算法和Alpha-Beta搜索方法

    1. 极小极大搜索方法    一般应用在博弈搜索中,比如:围棋,五子棋,象棋等.结果有三种可能:胜利.失败和平局.暴力搜索,如果想通过暴力搜索,把最终的结果得到的话,搜索树的深度太大了,机器不能满足, ...

  3. jmap的几个操作要慎用

    JDK中带有了一堆的工具是可以用来查看运行状况,排查问题的,但对于这些工具还是要比较清楚执行后会发生什么,否则有可能会因为执行了一个命令就导致严重故障,重点讲下影响比较大的jmap. 最主要的危险操作 ...

  4. 在TFS中使用Git Tags(标签或标记),实现代码的版本管理

    一.概述: 与TFVC中标记(Label)一样,Git的标签(Tag)也是TFS系统的代码管理中非常重要的一个版本管理工具.使用标签,我们可以每个时间点的代码注上一个通俗.并且容易记忆的名称(例如标签 ...

  5. TFS 2015 生成不输出任何结果

    这是一台用于测试的TFS 2015服务器,其中的数据是通过备份和还原,在使用应用层专用的方式配置出来的. 在配置完成代理服务器以后,运行生成,发现在获取代码之前就停止失败了,并且在生成过程中没有任何结 ...

  6. dorado-SplitSpanel控件

    1.这是一个界面布局控件 2.分为SideControl边区域和MainControl主区域 3.常用属性 3.1 collapsed:打开页面时,边区域是否显示 3.2 position:边区域占总 ...

  7. CC2530学习路线-基础实验-GPIO 控制LED灯亮灭(1)

    目录 1.前期预备知识 1.1 新大陆ZigBee模块LED灯电路 1.2 CC2530相关寄存器 1.3 寄存器操作技巧 1.4 CPU空转延时 1.4 操作流程图 2.程序代码 The End 1 ...

  8. SqlAlchemy操作(三)

    1.基于SQLALCHEMY建表 from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Colu ...

  9. string的函数的学习

    1.string类型的构造函数和对象的定义 string s3 : 把string s2 拷贝的 s3 string s4 : 把数组首地址或者字符串首地址strArr 从0开始截取到第n个字母 st ...

  10. Linux快速学习系列

    这篇文章会随着学习的进行,不断的更新!!! 总结 操作系统引入的抽象概念 进程(process) 地址空间(address space) 虚拟内存(virtual memory) 操作系统引入的cah ...