一步一步教你使用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. 用命令行批处理bat,设置代理服务器、DNS、网关、WINS等

    http://hi.baidu.com/83050158/blog/item/50cbd63f9da79ccb7d1e711b.html 将下面代码复制到记事本,另存为NetSet.bat,修改相应i ...

  2. git clone 远程分支

    先初始化一个git 仓库  命令:git init git clone 相应的地址 这样就会形成一个.git 隐藏文件夹 一定要注意的,要进入到子文件夹去git checkout feature/0. ...

  3. Python学习笔记五--条件和循环

    5.1 if语句 没什么好说,if语句语法如下: if expression: expr_true_suit 5.1.1多重条件表达式 单个if语句可以通过布尔操作符and,or,not实现多重条件判 ...

  4. cocos2d(粒子效果编辑器)

    ParticleDesigner  for  Mac下载地址:http://www.cocoachina.com/bbs/read.php?tid=108339 最近在做一款粒子编辑器 其实就是在co ...

  5. 单/多行文本添加省略号 (o゚ω゚o)

    1.单行文本添加省略号 一般用于新闻列表展示 li{ width: 200px; height: 30px; line-height: 30px; cursor: pointer; list-styl ...

  6. android_demo 之生成颜色

    老师说循环出颜色数字  然后显示出来 他说的什么一脸懵逼(=@__@=)   代码还在手上也还是懵逼 (づ。◕‿‿◕。)づ 不管了   留个脚印在这 以后想起来   至少也知道 直接上代码吧    说 ...

  7. Javascript Promise 学习(上)

    Promise 就是处理异步的一个规范方法 a();b();alert("a");如果a() 里面有一个ajax 或者settimeout 那么alert("a" ...

  8. Owncloud中文目錄包裹下載

    Owncloud提供私有雲端儲存環境的自由軟體解決方案,目前4.5版中文支援已經很完整,但是早期ZIP壓縮檔內的檔名不支援utf-8,所以使用ZIP格式下載整個目錄或多個檔案時大部分解縮軟體無法正確處 ...

  9. 利用http实现文件的上传和下载

    其他语言都比较方便,使用http上传.但是C++这样就差点,不过还好,Linux下有个curl的命令行工具,这是一个开源项目,底下有个子项目是libcurl,curl就是调用这个API实现的一系列ft ...

  10. rsyslog 同步丢失问题

    <pre name="code" class="html">[root@dr-mysql01 zjzc_log]# wc -l localhost_ ...