超实用 Git 使用方式介绍
都说程序员若是不知道 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 使用方式介绍的更多相关文章
- Spark部署三种方式介绍:YARN模式、Standalone模式、HA模式
参考自:Spark部署三种方式介绍:YARN模式.Standalone模式.HA模式http://www.aboutyun.com/forum.php?mod=viewthread&tid=7 ...
- C#开发微信门户及应用(11)--微信菜单的多种表现方式介绍
在前面一系列文章中,我们可以看到微信自定义菜单的重要性,可以说微信公众号账号中,菜单是用户的第一印象,我们要规划好这些菜单的内容,布局等信息.根据微信菜单的定义,我们可以看到,一般菜单主要分为两种,一 ...
- **crontab的使用方式介绍和no crontab for root 提示的处理
crontab的使用方式介绍 定时任务参数详解如下: crontab -l | crontab -e www.2cto.com #*/30 * * * * ntpdate 1 ...
- Mysql查看版本号的五种方式介绍
Mysql查看版本号的五种方式介绍 作者: 字体:[增加 减小] 类型:转载 时间:2013-05-03 一.使用命令行模式进入mysql会看到最开始的提示符;二.命令行中使用status可以看到 ...
- IntelliJ IDEA 编译方式介绍
编译方式介绍 相比较于 Eclipse 的实时自动编译,IntelliJ IDEA 的编译更加手动化,虽然 IntelliJ IDEA 也支持通过设置开启实时编译,但是不建议,因为太占资源了.Inte ...
- 轻量级ORM框架 QX_Frame.Bantina(二、框架使用方式介绍)
轻量级ORM框架QX_Frame.Bantina系列讲解(开源) 一.框架简介 http://www.cnblogs.com/qixiaoyizhan/p/7417467.html 二.框架使用方式介 ...
- Hive四种数据导入方式介绍
问题导读 1.从本地文件系统中通过什么命令可导入数据到Hive表? 2.什么是动态分区插入? 3.该如何实现动态分区插入? 扩展: 这里可以和Hive中的三种不同的数据导出方式介绍进行对比? Hive ...
- [转]Apache HTTP Server 与 Tomcat 的三种连接方式介绍
首先我们先介绍一下为什么要让 Apache 与 Tomcat 之间进行连接.事实上 Tomcat 本身已经提供了 HTTP 服务,该服务默认的端口是 8080,装好 tomcat 后通过 8080 端 ...
- android 定位的几种方式介绍
[地理位置] android 定位的几种方式介绍 开发中对于地图及地理位置的定位是我们经常要用地,地图功能的使用使得我们应用功能更加完善,下面 www.androidkaifa.com 总结了一下网络 ...
随机推荐
- golang sql.DB
数据库 sql.DB连接池需知: sql.DB内置连接池,连接不足时会自动创建新连接,新创建的连接使用sql.Open()时传入的dsn来构造. sql.DBClose时只会关闭连接池中的连接,未归还 ...
- 并发编程(三) IO模型
五 IO模型 常用的IO模型有4种: 阻塞IO 非阻塞IO IO多路复用 异步IO 不常用的有: 驱动信号 5.1 阻塞IO.非阻塞IO 阻塞IO:进程不能做其他的事情 非阻塞IO:等待数据无阻塞 阻 ...
- iOS6下实现滑动返回
[转载请注明出处] 之前在看iOS7滑动返回时,发现了一个iOS6 SDK下的第三方实现,今天偶然间发现了作者在其博客上对该实现的一些心得,读来深觉之前的思考太过肤浅,许多实际的问题没有考虑到.帖子链 ...
- 关于数据区间变换及numpy数组转图片数据的python实现
python实现区间转换.numpy图片数据转换 需求: 客户的需求是永无止境的,这不?前几天,用户提出了一个需求,需要将一组数据从一个区间缩放到另一区间? 思路: 先将数据归一化,再乘以对应区间的差 ...
- vue_router 动态路由
配置子路由: 路由的视图都需要使用view-router 子路由也可以嵌套路由使用: children来做嵌套如上图 使用location.页面name就可以做页面跳转 mounted:挂载,延迟跳转 ...
- Linux基础-swap交换分区
任务:对一块15G大小的硬盘进行分区,主分区为5G,扩展分区10G,一个逻辑分区5G作为swap交换分区,并激活查看新的swap分区 第一步,建立的新的SCSI硬盘,开启Linux系统前添加一块大小为 ...
- 【树】ztree
ztree前端参见官网http://www.ztree.me/v3/main.php Action示例 public String initLabServerTree(){ return SUCCES ...
- tomcat集群及session共享
一般来说,java web app主要用作两个领域: 1.api.api一般是无状态的,所以无需考虑session共享的问题 2.传统web应用和网站,如crm,oa,erp,b2c,bbs等.尤其b ...
- PHP内存溢出 Allowed memory size of 解决办法
PHP出现如下错误:Allowed memory size of xxx bytes exhausted at xxx:xxx (tried to allocate xxx bytes) 关于 ...
- c语言格式控制符
http://zhidao.baidu.com/link?url=-YJjz3U0fd_eSW9eLa8ankGo_QbyOOOaKYWyAY9g4mKWQj0DN6l12OSLJz24U8jCwo1 ...