之前的帖子已经讲述了什么是 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. 6、Semantic-UI之动画按钮样式

    6.1 动画按钮样式 在Semantic-UI中提供了三种动画样按钮式表,分别为: 左右移动 上下移动 淡入淡出   在实际开发中,很少使用这种动画按钮,根据实际情况使用,强制使用到页面中反而不太适合 ...

  2. Arduino SPI + SPI Flash芯片W25Q80BV

    W25Q80BV是台湾华邦电子(Winbond)生产的8M-bit串行flash芯片.主要特性有: 工作电压:2.5 ~ 3.6 V 功耗:读写(active)时4mA,低功耗(power-down) ...

  3. requirejs 配制

    baseUrl: 用来配制动态加载脚本时,脚本文件的起始位置,此属性可以指定值,也可以由 requirejs 自动计算出值: 1:不进行任何配制: 假如 a.html 中引用 require.js 文 ...

  4. hello world! hello blog!

    2015年12月21日 16:42:15   博客开启!

  5. C语言编程学习:写的秒速计算四则混合运算项目

    C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...

  6. 三,PHP中错误日志display_errors与error_reporting配置

    1,display_errors display_errors 错误回显,一般常用语开发模式,但是很多应用在正式环境中也忘记了关闭此选项.错误回显可以暴露出非常多的敏感信息,为攻击者下一步攻击提供便利 ...

  7. UIView之setNeedsDisplay与drawRect 和 setNeedsLayout与layoutSubViews

    1.UIView的setNeedsDisplay和setNeedsLayout方法 首先两个方法都是异步执行的.而setNeedsDisplay会调用自动调用drawRect方法,这样可以拿到  UI ...

  8. 【线程】结果缓存实现(future与concurrenthashmap)

    Computable<A,V>接口中生命了一个函数Computable,其输入类型为A,输出类型为V,在ExpensiveFunction中实现的Computable,需要很长时间来计算结 ...

  9. redis 3.0 集群__故障测评

    一, slave 是不能通过redis-cli 直接进行读写操作的,但是可以执行 keys, info 命令( 猜测类似全局性的不影响到原子性操作的命令应该都可以,没有一一试验) 二,集群中的某节点异 ...

  10. codis__通用的使用模式

    1,按功能模块分成不同的productName 参照 sample_user, sample_dynamic (见附件) sample_user.tar.gz,sample_dynamic.tar.g ...