都说程序员若是不知道 GitHub 就不是一个合格的程序员,其实这话说的过分了,不知道就学嘛,今天我们就来说说 Git 和 GitHub 到底是什么。

我们在开发软件的时候,常常是需要多人协作完成,这时候我们就需要对我们的代码进行控制,常见的版本控制工具有 CVS、SVN、Git ,区别就在于前两种是集中式的,而 Git 是分布式版本控制工具。

什么是版本控制呢,想像一下,我们需要修改一个文档,我们修改之前需要备份,修改之后需要和源文件进行比对,然后合并,若是多个人一同进行修改那就更麻烦了,一个不小心就将文档搞乱了。

而使用版本控制工具就可以解决这个,每一次改动都有记录,谁改动的,改的什么,我们可以清楚的看到并回到之前的版本。

那么集中式的管理工具和分布式又有什么区别呢?集中式的就是有一个中央服务器,每个人在作业的时候将代码 down 下来,写代码,然后 commit, 版本的信息都存放在服务器上。分布式就是我们每个人本地都有一个库,版本的信息都会存放在本地。

分布式的缺点是每次 down 或 commit 都需要联网,若是网络不给力,真的急死你,一个项目几百兆,坑你没话说。而在分布式中我们虽说可以轻松的控制版本,可是在多人交流以及推送的时候还是需要一个用于中间交换信息的服务器,GitHub 应运而生。

所以说 GitHub 解决了多人之间代码交互与推送的问题。我们可以将自己的代码放到 GitHub 上供他人吐槽,也可以去下载他人的代码来进行二次开发。当然,你也可以将自己的日记推送上去,如果你想的话。

Git 是一个工具,若是你不使用,这些命令很容易就遗忘,我就是这样,所以我也没有学习很多深奥的东西,只是简单的推送代码上去,拉取代码下来。使用 Git 可以用命令行也可以使用图形化界面。图形化工具据说 sourcetree 用的人挺多,今天我主要说命令。

1 安装 Git

直接到官网去下载,无脑安装即可。最后一步注意勾选,就可以在鼠标右击看到 Git 的 bash  和 GUI 的打开方式。

2 配置信息

因为 Git 是分布式的版本控制工具,所以你要告诉 Git 服务器你是谁,自报家门。配置 name 和 email .

git config --global user.name "XXX"
git config --global user.email "XXX"

PS. 附送几个命令

删除全局配置项。

git config --global --unset user.name

编辑配置文件,当然也可以覆盖配置。

git config --global --edit

查看配置是否生效

git config --list 

3 Git 创建本地仓库

pwd              // 显示当前目录
cd .. // 返回上一层
mkdir newRepo // 新建一个文件 newRepo
ll or ls // 显示文件
cd newRepo // 进入文件 newRepo
git init // 将新建的文件初始化为 Git 本地仓库
ls -a // 显示全部目录,包括隐藏的目录,会出现一个 .git 文件
echo "这里是输入到文件中的内容" >> test.txt // (新建一个 test 文件,输入内容 >> 是追加的意思)
cat test.txt // 查看文件
git add test.txt // 添加文件到 Git 暂存区
git commit -m " first commit" // 提交到仓库,并添加注释 “first commit”
git status // 查看状态,clean 表示暂存区的文件已经全部提交

上面的操作,就是在本机新建一个文件夹,并初始化为仓库,新建一个文件,设置为本地的 Git 仓库。这里涉及到几个概念、工作区、暂存区、仓库。工作区就是我们自己的本地文件夹,暂存区是工作区和仓库中间的一层缓冲。

4 本机与远程相连

下图演示如何将公开的密钥添加到 GitHub。点击头像,选择 Setting 选中 SSH key 新建一个 SSH key ,将复制的公钥贴过来即可。

5 新建远程仓库,并推送数据到远程

登录 GitHub ,点击自己的头像,Your repositories, new 一个仓库,取个名字,添加描述语,直接 create repository 即可。

在新建一个库之后就会给出可能会使用到的命令。

新建一个 README.md 文件,并将文件提交到本地仓库中。

echo "# Blockchain_First" >> README.md
git init
git add README.md
git commit -m "first commit"

这里注意,选择推送到远程的方式时,选择 SSH 加密的方式,不要使用 HTTPS 的方式,因为使用 HTTP 的方式每次推送都要输入账户和密码。

git remote add origin git@github.com:YU-JI-KUI/Blog.git

推送到远程的 master 分支上,第二次推送的时候就会默认推送到上次选择的分支,即不需要添加 -u origin master。

git push -u origin master

6 从 GitHub 上下载代码

直接找到想要下载的项目,直接下载即可,如下图

还可以使用命令,先到一个你想存放项目的目录,使用命令即可。

git clone git@github.com:YU-JI-KUI/Blog.git

好了,以上就是最最简单的 Git 和 GitHub 的应用了。

超实用 Git 使用方式介绍的更多相关文章

  1. Spark部署三种方式介绍:YARN模式、Standalone模式、HA模式

    参考自:Spark部署三种方式介绍:YARN模式.Standalone模式.HA模式http://www.aboutyun.com/forum.php?mod=viewthread&tid=7 ...

  2. C#开发微信门户及应用(11)--微信菜单的多种表现方式介绍

    在前面一系列文章中,我们可以看到微信自定义菜单的重要性,可以说微信公众号账号中,菜单是用户的第一印象,我们要规划好这些菜单的内容,布局等信息.根据微信菜单的定义,我们可以看到,一般菜单主要分为两种,一 ...

  3. **crontab的使用方式介绍和no crontab for root 提示的处理

    crontab的使用方式介绍   定时任务参数详解如下:  crontab -l     |  crontab -e    www.2cto.com   #*/30 * * * * ntpdate 1 ...

  4. Mysql查看版本号的五种方式介绍

    Mysql查看版本号的五种方式介绍 作者: 字体:[增加 减小] 类型:转载 时间:2013-05-03   一.使用命令行模式进入mysql会看到最开始的提示符;二.命令行中使用status可以看到 ...

  5. IntelliJ IDEA 编译方式介绍

    编译方式介绍 相比较于 Eclipse 的实时自动编译,IntelliJ IDEA 的编译更加手动化,虽然 IntelliJ IDEA 也支持通过设置开启实时编译,但是不建议,因为太占资源了.Inte ...

  6. 轻量级ORM框架 QX_Frame.Bantina(二、框架使用方式介绍)

    轻量级ORM框架QX_Frame.Bantina系列讲解(开源) 一.框架简介 http://www.cnblogs.com/qixiaoyizhan/p/7417467.html 二.框架使用方式介 ...

  7. Hive四种数据导入方式介绍

    问题导读 1.从本地文件系统中通过什么命令可导入数据到Hive表? 2.什么是动态分区插入? 3.该如何实现动态分区插入? 扩展: 这里可以和Hive中的三种不同的数据导出方式介绍进行对比? Hive ...

  8. [转]Apache HTTP Server 与 Tomcat 的三种连接方式介绍

    首先我们先介绍一下为什么要让 Apache 与 Tomcat 之间进行连接.事实上 Tomcat 本身已经提供了 HTTP 服务,该服务默认的端口是 8080,装好 tomcat 后通过 8080 端 ...

  9. android 定位的几种方式介绍

    [地理位置] android 定位的几种方式介绍 开发中对于地图及地理位置的定位是我们经常要用地,地图功能的使用使得我们应用功能更加完善,下面 www.androidkaifa.com 总结了一下网络 ...

随机推荐

  1. jquery php ajax多图片上传.上传进度,生成缩略图

    本例用到其他2个php class.upload.php和 functions.php还有css和js以及img文件 下载地址为www.freejs.net/demo/91/down.zip 演示 J ...

  2. 20155330 2016-2017-2 《Java程序设计》第五周学习总结

    20155330 2016-2017-2 <Java程序设计>第五周学习总结 教材学习内容总结 学习目标 理解异常架构 掌握try...catch...finally处理异常的方法 会用t ...

  3. Shell基础-Bash命令类型

    Bash命令大体可以分为两类: 第一类是可执行文件,例如ls等 第二类是Bash内建命令,常见echo,cd等 bash命令优先级表:1别名  由alias指定 2关键字 3函数  由function ...

  4. ECMAScript——(二)

    1.语法 区分大小写 变量是弱类型(定义变量时只用 var 运算符,可以将它初始化为任意值.) 每行结尾的分号可有可无(建议写上) 注释与Java一样 括号表示代码块 2.变量 变量可以不用声明,变量 ...

  5. js原生选择class DOM元素

    document.querySelector(".demo"); querySelector() 方法返回匹配指定选择器的第一个元素.如果需要返回所有的元素,使用 querySel ...

  6. aarch64_m2

    mingw32-leptonica-1.74.4-1.fc26.noarch.rpm 2017-06-12 17:20 1.0M fedora Mirroring Project mingw32-le ...

  7. 一步一步搭建11gR2 rac+dg之配置单实例的DG(八)【转】

    RAC主库配置单实例ActiveDataguard 本文文档结构: 这里配置的过程中需要注意的一项是多看看rac1和rac2以及dg的告警日志会对配置过程有更深刻的理解...配置oracle rac的 ...

  8. MVVM模式View和ViewModel的通信

    还需要些什么呢 在前面几篇博客中我们尝试去实现了MVVM中的数据绑定.命令绑定和事件绑定.貌似实现的差不多了.我最早尝试用MVVM去开发的时候也是这么想的,没有用第三方框架,甚至只是实现了数据绑定和命 ...

  9. 我常用的 Python 调试工具 - 博客 - 伯乐在线

    .ckrating_highly_rated {background-color:#FFFFCC !important;} .ckrating_poorly_rated {opacity:0.6;fi ...

  10. 关于RundownProtect到底是什么东西

    RundownProtect这个字段相信只要是读过WRK源码的都会看过这个东西,这个字段在进程和线程的结构中都存在.最典型的例子就是对进程要进行什么操作的时候会先引用这个字段进行加保护,等操作结束后再 ...