一步一步教你使用Git

互联网给我们带来方便的同时,也时常让我们感到困惑。随便搜搜就出一大堆结果,然而总是有大量的重复和错误。小妖发出的内容,都是自己实测过的,有问题请留言。

  • 现在,你已经安装了Git,即:

  • 新建一个目录 test_git,让我们开始尝试

  • 初始化Git

  • 现在你的代码已经在Git管理之下了,开始编辑,新建一个文件 master/1.md

  • 保存后回到根目录test_git下查看一下当前Git的状态

  • 这里告诉我们,多了一个文件夹,可以用 git add 命令把它加入缓存区

  • git add . 把所有修改加入缓存区,注意是“git add .”。你也可以把部分修改加入缓存区,那就用“git add filename”。这里简单说下什么是缓存区,git 下共有三个区:工作区、缓存区、库。工作区就是你编辑的环境,缓存区就是已经存起来的修改,准备提交到库了,库就是已提交的修改。下面查看下 git add 后的Git的状态,还是用 git status

  • 这个告诉我们,文件已经在缓存区了,默认情况下,红色就是在工作区,绿色就是在缓存区。那我们现在还能对 master/1.md 继续修改或增删别的文件吗?可以的,我们增加一个文件 master/2.md。内容为“第二个文件,内容都无所谓啦”,并修改 master/1.md

  • 然后还是 git status(这个只是为了让你得知当前Git是什么状态,并不是必须的,熟练后可以省略,当然时常查看一下状态是个好习惯)

  • 我们看到,有一个缓存区的修改,有两个工作区的修改。好吧,先git add .

  • 然后提交到库,这里用命令 git commit -m "本次提交的说明"

  • 提交完成,再看一下当前的状态

  • 这告诉我们,已经提交过,提交后并没有任何修改,工作目录是“干净”的

  • 有一次,我不小心修改了一个文件,还没有提交到缓存区,我想放弃修改

  • 可以看到,我们先修改了 master/1.md,想放弃它的修改,我们用了 git checkout 命令。git checkout 相当于用库里的文件覆盖了当前工作区的文件,也就是放弃了工作区的修改。放弃单文件的修改,用 “git checkout filename”,放弃所有文件区的修改,用 “git checkout .”,事实上大部分命令都支持“filename”和“.”

  • 另一种场景,我不是修改了一个文件,而是在工作区新加了一个文件,怎么办?

  • 可以看到,现在 master/3.md 还不在 Git 的管辖之下,不能用 git checkout 删除。

  • 这里用到 git clean -df ,用来删除工作区不在 Git 管辖下下的新增文件

  • 另一种场景,如果是已经提交到缓存区的文件,想放弃它的修改呢,首先把它放回工作区,再用 git checkout 命令就可以了。

  • 这里用 git reset 命令将文件从缓存区放回到工作区,git reset 同样支持“git reset filename”和“git reset .”

  • 有那么一次,你做了大量的修改,增删了大量文件,而且一部分已经提交到缓存区。这时产品经理突然说这个需求被砍了,全部回滚吧。你可以把

  • git reset .

  • git checkout .

  • 合并成一条命令

  • git reset --hard

  • 这就是放弃上一次提交后的所有修改,当然,这个不能删除新增的文件,全部回滚的话还得加一条

  • git clean -df

  • 先小结一下,这次我们只介绍了单人单分支下简单的 Git 使用方法,包括三个区(工作区、缓存区、库)的概念,以及文件修改是如何在这三个区间流动的。现在 Git 只是你自己的代码版本控制工具。如果你看到了这里,那你可能也是一个 Git 新手,希望激起了你对 Git 的兴趣,以后还会接着介绍 Git 的分支和远程库,多人协作等。当然,不需要等我,这种文章网上铺天盖地,我记录下来多半是为了我的小弟,让他少走点弯路~

一步一步教你使用Git的更多相关文章

  1. 一步一步教你用 Vue.js + Vuex 制作专门收藏微信公众号的 app

    一步一步教你用 Vue.js + Vuex 制作专门收藏微信公众号的 app 转载 作者:jrainlau 链接:https://segmentfault.com/a/1190000005844155 ...

  2. 一步一步教你如何在linux下配置apache+tomcat(转)

    一步一步教你如何在linux下配置apache+tomcat   一.安装前准备. 1.   所有组件都安装到/usr/local/e789目录下 2.   解压缩命令:tar —vxzf 文件名(. ...

  3. 一步一步教你将普通的wifi路由器变为智能广告路由器

    一步一步教你将普通的wifi路由器变为智能广告路由器 相信大家对WiFi智能广告路由器已经不再陌生了,现在很多公共WiFi上网,都需要登录并且验证,这也就是WiFi广告路由器的最重要的功能.大致就是下 ...

  4. 使用WPF教你一步一步实现连连看

    使用WPF教你一步一步实现连连看(一) 第一步: 问题,怎样动态的建立一个10*10的grid(布局) for (int i = 0; i < 10; i++){ RowDefinition r ...

  5. 一步一步教你将开源项目上传到jcenter

    最近闲着看了一下jcenter的使用,也想将自己使用频率比较高的东西抽成类库,然后通过compile来使用,提高开发效率,本来以为挺简单的,但是网上介绍的比较模糊,很多博客也比较老了,不适用,花了我一 ...

  6. Ace教你一步一步做Android新闻客户端(一)

    复制粘贴了那么多博文很不好意思没点自己原创的也说不出去,现在写一篇一步一步教你做安卓新闻客户端,借此机会也是让自己把相关的技术再复习一遍,大神莫笑,专门做给新手看. 手里存了两篇,一个包括软件视图 和 ...

  7. git 出现502错误后用depth一步一步来

    公司有个项目的git仓库,因为一些二进制文件也放在里面,版本迭代后,整个仓库特别大,有好几G. 直接git clone是不行的,会报这样的错误: error: RPC failed; HTTP 502 ...

  8. 一步一步教你实现iOS音频频谱动画(二)

    如果你想先看看最终效果再决定看不看文章 -> bilibili 示例代码下载 第一篇:一步一步教你实现iOS音频频谱动画(一) 本文是系列文章中的第二篇,上篇讲述了音频播放和频谱数据计算,本篇讲 ...

  9. 一步一步教你实现iOS音频频谱动画(一)

    如果你想先看看最终效果再决定看不看文章 -> bilibili 示例代码下载 第二篇:一步一步教你实现iOS音频频谱动画(二) 基于篇幅考虑,本次教程分为两篇文章,本篇文章主要讲述音频播放和频谱 ...

随机推荐

  1. Qt在VS2013或Qt Creator 中的控制台输出方式设置

    首先值得注意的是:在写程序的时候,项目保存路径不要涉及到中文,否则容易出错! 一.Qt在VS2013中的控制台输出方式: 注意:这里是而不是Qt Application. 然后直接点击finish即可 ...

  2. 狗狗40题~ (Volume C)

    A - Triangles 记忆化搜索呗.搜索以某三角形为顶的最大面积,注意边界情况. #include <stdio.h> #include <cstring> #inclu ...

  3. 请阐述调用Activity有哪几种方法,并写出相关的Java代码

    请阐述调用Activity有哪几种方法,并写出相关的Java代码. 答案:可以采用两种方式调用Activity:显示调用和隐式调用.显示调用直接指定了Activity,代码如下: Intent int ...

  4. IE9的BUG?jQuery的BUG?

    本文转载自http://big-student.iteye.com/blog/1898213 在IE9和IE10中,当对一个html的样式初始了一个很大的left或者top时,使用jQuery的off ...

  5. 零基础创建RCP工程

    一.环境搭建 1. 安装java jdk,我选择的是jdk 1.7版本,配置环境变量: 2. 下载并安装java EE: 二.创建工程 1. 打开File-> New ->other -& ...

  6. 简单DOS命令实现局域网Windows远程关机

    1秒内重启局域网内计算机名为ppgsvr-pc的用户电脑shutdown -r -m \\ComputerName -t 1 1秒内关闭局域网内ppgsvr用户电脑shutdown -s -m \\C ...

  7. 转:iOS 7人机界面准则

    原文来自于:http://www.infoq.com/cn/news/2014/02/ios-ui-design Apple官方推出的“iOS人机界面准则”一直被iOS开发者奉为绝对的设计参考宝典,特 ...

  8. 转:Java反射教程

    原文来自于:http://www.importnew.com/9078.html 什么是反射?反射有什么用处? 1. 什么是反射? “反射(Reflection)能够让运行于JVM中的程序检测和修改运 ...

  9. mongodb 增加用户以及认证用户

    test>use admin switched to db admin admin>db.addUser('yshy','yshy') { "user" : " ...

  10. Highly divisible triangular number

    我的那个暴力求解,太耗时间了. 用了网上产的什么因式分解,质因数之类的.确实快!还是数学基础不行,只能知道大约. The sequence of triangle numbers is generat ...