之前的帖子已经讲述了什么是 Git 的仓库,并且添加了文件到 Git 的仓库,这里我们来学习下一些简单的操作。

status 和 diff

   之前我们已经提交了了一个 testFile.txt 的文件,现在我们修改这个文件。我们往这个文件里面追加一行内容。使用 status 进行查看:

hubwiz@bad97b95201f:~/learngit$ git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: testFile.txt
#
no changes added to commit (use "git add" and/or "git commit -a")

  我们可以看到 status 命令告诉我们 testFile.txt 文件已经被修改,但是没有提交。

  我们这里使用  git diff 命令查看改动的内容:

hubwiz@bad97b95201f:~/learngit$ git diff
diff --git a/testFile.txt b/testFile.txt
index 5f1bf21..a70afd3 100644
--- a/testFile.txt
+++ b/testFile.txt
@@ -1 +1,2 @@
the first file for test git
+study status and diff command

  我们通过对比发现 testFile.txt 文件添加了一行 “study status and diff command“ 接下来用 git addgit commit 将文件添加并且提交。

hubwiz@bad97b95201f:~/learngit$ git add testFile.txt
hubwiz@bad97b95201f:~/learngit$ git commit -m "add status and diff command"
[master cfd9766] add status and diff command
1 file changed, 1 insertion(+)

log

  到这里我们已经提交了两次了,我们如何查看提交的历史呢?可以使用 git log 命令。

hubwiz@bad97b95201f:~/learngit$ git log
commit cfd976666ffd0067a1505eb7ee28303feb392f4d
Author: Jeff.Ma <mywr1026@163.com>
Date: Wed Mar 1 14:57:51 2017 +0000 add status and diff command commit 0de43c0a4040a129652b74214b638a1b6e62cad0
Author: Jeff.Ma <mywr1026@163.com>
Date: Tue Feb 28 14:50:10 2017 +0000 First commit the file for test Git

  可以看到两次提交的信息都打印出来了,最新的提交是在最上面显示的。而其中的 commit 后面的内容就是版本号。

reset

  突然发现这次提交是不正确的,我们要回退到上个版本。可以使用 git reset --hard HEAD^

hubwiz@bad97b95201f:~/learngit$ git reset --hard HEAD^
HEAD is now at 0de43c0 First commit the file for test Git

  这样我们就回退到上个版本了。我们可以使用 git reset --head <版本号> 回退到指定的版本

  当然凭借我们的记忆是无法记住每次的版本号的,那么怎么办?有人说可以使用 git log 查看,那么你可以试下,当你回退到上个版本的时候再使用 git log 将没有办法看到我们在学习 status 时候的改动了。那么怎么办呢? 这里我们可以使用 git relog 进行查看的。

hubwiz@bad97b95201f:~/learngit$ git reflog
0de43c0 HEAD@{0}: reset: moving to HEAD^
4ad0b03 HEAD@{1}: commit: add aaa
0de43c0 HEAD@{2}: reset: moving to HEAD^
cfd9766 HEAD@{3}: commit: add status and diff command
0de43c0 HEAD@{4}: commit (initial): First commit the file for test Git

  到这里我想大家应该对 Git 有了进一步的认识了吧,那还不赶紧自己动手试试!!!这里我想说下,本人的帖子都很短,并不是不想写这么多,而是觉得写的多了,一些读者看了后面就忘记前面的内容了,索性每次写一点点,然后读者看了后就去自己练习一下,会提升很大,毕竟真正的实践才会有所帮助。不多说了,洗碗去了!!!加油!!!

git 学习之基本操作的更多相关文章

  1. Git 学习笔记–基本操作

    Git 与 SVN 不同,是分布式的版本控制系统,不需要主服务器即可工作,实际中为了方便各个工作者间同步工作,通常还是会设置主服务器. Git的设置及初始化: 设置全局用户信息: luojiahu@u ...

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

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

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

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

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

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

  5. Git学习(4)基本操作

    1.版本提交 首先,接着上个Git学习(3)继续 我们先修改test.txt文本内容,增加一些信息进去,然后保存: Add a new data 第一步:运行命令 git status 命令查看文件是 ...

  6. Git学习笔记---协作的一般流程

    一般的操作流程 1.pull 王小坤与另一个同事张大炮一起开发一个项目,张大炮昨天修改了数据库读写的api,优化了执行速度,并把read()函数改名成了Read(),下午下班之前把这些代码push到服 ...

  7. Git 学习(八)其他

    Git 学习(八)其他 通过以上七章Git的学习,基本操作已差不多了,本章介绍一点落网之鱼:  包括如何忽略文件.配置别名.以及使用GitHub等. 当然,Git的强大远不是七章内容可概括的,之后可结 ...

  8. git学习------>写给 Git 初学者的7个建议

    PS:本文转载于(http://blog.jobbole.com/50603/),本文由 伯乐在线 - 吴鹏煜 翻译. 英文出处:(http://sixrevisions.com/web-develo ...

  9. git 学习笔记 —— 获取远端分支并修改后提交至远端仓库

    笔者最近进行开发过程中,所有参与者的代码需要通过 git 上传到远端仓库中,不同的模块对应不同的 git 分支,不同模块的数据需要从远端仓库中获取.这里记录下笔者从远端仓库中获取分支数据,进行修改,最 ...

随机推荐

  1. ArcGIS Runtime SDK for Android 授权(arcgis android 去除水印)

    ArcGIS Runtime SDK for Android 授权 ESRI中国北京 要下载和安装 ArcGIS Runtime SDK for Android,您需要注册开发者账户,进而便拥有了访问 ...

  2. Jenkins Pipeline+Maven+Gitlab持续集成构建

    http://www.cnblogs.com/xiaodai12138/p/9996995.html

  3. Redis 工具类

    项目里的Redis 工具类,写下来以备后用 public class RedisConnector { public class RedisParseResult<T> { public ...

  4. C# TinyIOC简单用法

    先添加一个接口 namespace IContract { public interface IBase { void ShowMessage(); } } 再添加两个实现类 namespace Co ...

  5. ItemTemplateSelector

    ItemTemplateSelector的中文翻译是模板选择器 是用来选择模板. 他的用法稍有不同,他必须派生于DataTemplateSelector类. 然后重写SelectTemplate这个方 ...

  6. [转]什么是VUE?为什么用VUE?

    Vue.js新手入门指南 最近在逛各大网站,论坛,以及像SegmentFault等编程问答社区,发现Vue.js异常火爆,重复性的提问和内容也很多,楼主自己也趁着这个大前端的热潮,着手学习了一段时间的 ...

  7. 列表的操作,元组,range; enumerate

    一.列表: 1. 什么是列表 列表是一个可变的数据类型 ,列表由[]来表示, 每一项元素使用逗号隔开. 列表什么都能装. 能装对象的对象. 列表可以装大量的数据 2. 列表的索引和切片 列表和字符串一 ...

  8. linux awk 文本分析实例 [视频]

    实例: 点我打开哔哩哔哩 实战: 点我打开哔哩哔哩 以下是一个分享: ➜ log Time Now 16:23:35 > awk '/Installed/' yum.log* | awk -F ...

  9. Unity---解决重新调整游戏分辨率后,再运行游戏还是和之前分辨率一样的问题

    经历 上次在Unity做了个小游戏,发布的时候忘了取消默认全屏了. 于是在Unity重新发布了一下,可是出来后分辨率还是默认全屏. 当时百思不得其解 原因 主要是因为当用Unity发布一个新游戏的时候 ...

  10. 2019.2.14 t3 车辆销售

    用算法求最大生成树,在并查集合并时,把原本的一个根连向另一个 根改成两个根都连向一个新建的节点,并把当前正在处理的边的权值赋给这个新 节点做点权.这样形成的结构会是一棵树. 一个点的答案大致上是树的根 ...