一步一步教你使用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. 检查DOM能力的函数

    var a=document.implementation.hasFeature("Core","2.0"); var b=document.implement ...

  2. java rmi 使用方法

    server package Server; import java.rmi.Naming; import java.rmi.RMISecurityManager; import java.rmi.r ...

  3. 1.1HTML的基本概念

    1.WWW有3个基本的组成部分,分别是URL(统一资源定位器),HTTP(超文本传输协议),HTML(本文本标记语言). 2.一个HTML文件是由一系列的元素和标签组成的,元素不区分大小写. 3.&l ...

  4. Box model小心得

    最近在研究css~当设置一个元素width后~有时候也会对他设定padding,margin,border值, 每次这样我就心里琢磨,那这个元素的width会变吗,js获取元素的宽度width()指的 ...

  5. phpmyadmin密码字段加密方法

    UPDATE member SET password=md5('password')

  6. C# .NET 使用第三方类库DotNetZip解压/压缩Zip rar文件

    DotNetZip on CodePlex: http://dotnetzip.codeplex.com/ 详细的可以看源代码……总之感觉比SharpZipLib好用.而且DotNetZip支持VB, ...

  7. 最难忘的Bug调试经历

    摘要:目前,著名的社区问答网站Quora上出现一个很火的讨论:你调试过最难的Bug是什么?大家纷纷留言,把自己最痛苦的一次调试经验写下来. 相信每位程序员都有过一段不堪回首地Bug调试经历,程序员一听 ...

  8. MSP430 中断优先级

    MSP430的中断优先级.打开关闭.中断嵌套 优先级顺序从高到低为:    PORT2_VECTOR (1 * 2u) /* 0xFFE2 Port 2 */    PORT1_VECTOR (4 * ...

  9. Android 自定义控件 EditText输入框两边加减按钮Button

    自己封装的一个控件:EditText两边放加减按钮Button来控制输入框的数值 Demo 下载地址: 第一版:http://download.csdn.net/detail/zjjne/674086 ...

  10. JS Map 简单实现

    /* * MAP对象,实现MAP功能 * * 接口: * size() 获取MAP元素个数 * isEmpty() 判断MAP是否为空 * clear() 删除MAP所有元素 * put(key, v ...