场景一: 已经用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. 初识Java ThreadLocal

    转载自:https://www.cnblogs.com/dreamroute/p/5034726.html ThreadLocal翻译成中文比较准确的叫法应该是:线程局部变量. 这个玩意有什么用处,或 ...

  2. I2C总线驱动框架详解

    一.I2C子系统总体架构 1.三大组成部分 (1)I2C核心(i2c-core):I2C核心提供了I2C总线驱动(适配器)和设备驱动的注册.注销方法,I2C通信方法(”algorithm”)上层的,与 ...

  3. VHDL实例化过程

    第二步:建立一个名为MUX_0的乘法器 第三步:在程序中例化,看以下程序. -- 该程序用来实现复数的乘法,端口分别定义的复数的 -- 输入的实部和虚部和输出的实部和虚部 LIBRARY IEEE; ...

  4. SPSS-多重响应-频率和交叉表案例分析(问卷调查分析)

    在10.1休假前,希望跟大家讨论一下SPSS-多重响应--频率和交叉表分析,希望大家能够多提点提点 在云南电信网上营业厅做了一个关于“客户不使用电信3g业务的原因有哪些的问卷调查,问题所示: 这份问卷 ...

  5. Servlet从浅入深

    Servlet是什么 servlet 是运行在 Web 服务器中的小型 Java 程序(即:服务器端的小应用程序). servlet 通常通过 HTTP(超文本传输协议)接收和响应来自 Web 客户端 ...

  6. 如何使用C++11实现C#属性概念设计

    目录(原创博客,版权所有,转载请注明出处 http://www.cnblogs.com/feng-sc) 1.概述 2.C#属性的概念  2.1.简单示例代码介绍C#中的属性  2.2.C++实现效果 ...

  7. 【算法31】寻找数组的主元素(Majority Element)

    题外话 最近有些网友来信问我博客怎么不更新了,是不是不刷题了,真是惭愧啊,题还是在刷的,不过刷题的频率没以前高了,看完<算法导论>后感觉网上很多讨论的题目其实在导论中都已经有非常好的算法以 ...

  8. Linux应用监控工具

    Linux下的监控工具丰富繁杂,如果只知道top.free之类的就太少了,而且也不能胜任日常的Linux管理工作,尤其是在排除Web服务器问题时. 本文给出5个Linux下功能更为强大的监控工具,有了 ...

  9. NLayerAppV3-Infrastructure(基础结构层)的Data部分和Application(应用层)

    回顾:NLayerAppV3是一个使用.net 2.1实现的经典DDD的分层架构的项目. NLayerAppV3是在NLayerAppV2的基础上,使用.net core2.1进行重新构建的:它包含了 ...

  10. sql添加字段说明

    1,sql字段说明 添加 exec sp_addextendedproperty  N'MS_Description', N'主键', N'user', N'dbo', N'table', N'Fre ...