在注册了github账号之后,一度不知道该如何使用。

在仔细研究了github的官方说明文档、廖老师的教程、还有许多博主的文章之后,总算对github的操作和体系有了较为深刻的了解,还有这篇简单的入门教程希望能给你们带来启发。如果有不清楚或者错误地地方欢迎指出。本文以MAC OS操作系统为基础。

1.github是什么

先来摘录一段维基的关于github的说明:

GitHub is a Web-based GIt Version control repository hosting service

github是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,所以叫做Github。

简单地说,github是一个源代码的在线托管平台,我们写好了代码就可以上传到这个平台进行系统的管理。这个“管理”就是这个平台最厉害的地方,因为我们写代码的时候总会有BUG,遇到一个大项目总会和别的小伙伴一起工作,这其中的复杂如果是手工操作大家也可以想象是多么困难。

github的第一个长处就在于,版本控制。这个功能可以说非常强大了,很多人可能都有过写论文的经历,体验过第一版、第二版、第三版…最终版…最终终终终版的经历,万一最(终n)版本被否决了,想找最(终n-1)的版本,而又不小心因为手残等各种问题被删除了,那可真是作大死了。

写代码出bug,不断改代码的事情可以说是家常便饭了,如果每一个版本都要手动去找真的很困难,这个时候就发明了github用来解放众coder,通过将码好的代码上传,版本控制工具可以用于记录程序开发的每个版本,这样不管你是想要第n个版本,还是第n-3个版本都可以快速找到并恢复,不再为版本的保存和管理抓破头皮了!

github的第二个长处就是协同工作,一般把github认为是树状结构,但是我觉得在这里如果比作河流的话也会很好理解,我们总的项目如同长江,每一个贡献代码的小伙伴就像是支流,支流汇入主干形成了我们最后的项目。当然这种比喻不严谨,但是作为理解协同工作也许是个好比喻:)github的代码托管为我们的协同工作提供了方便。

那我们为何要使用git?如果这些理由还不够,github还可以记录你在代码世界中的成长轨迹,在你的个人主页里有一个贡献值(contribution activity),按照颜色的深浅记录你这一年在 github提交代码的量,许多公司在招聘员工的时候,不仅会要求你能熟练操作git,更会看你在github上的真实的贡献值,因为这个贡献值很难造假,所以也是评估一个coder能力和兴趣的重要条件。

长篇大论说完,我们还是开始上手真实地操作吧!

2.配置运行环境

首先在Terminal(在mac os上最简单的方法就是用control+空格键呼出spotlight,然后在里面输入terminal)中输入:

git --version

检查是否安装了git,如果已经安装,会显示

git version 2.15.      #版本可能有出入

如果没有安装,请输入:

brew install git       #如果没有安装Homebrew,请自行搜索安装教程
brew link git

然后设置Git运行环境:

git config --global user.name "your name"    #注意空格,并在引号中输入名字
git config --global user.email your-email #最后替换成你的邮箱

最后可以输入

git config user.name
git config user.email

检查是否配置成功。

通过提交名字和邮箱,可以使今后每一次代码的提交带上你的烙印。

在接下来的操作之前,需要你自行去github申请一个账号噢。

3.创建Git repository,克隆库到本地

repository被翻译为库,是github操作最重要的概念之一,在库里,你就可以放上自己的项目。作为新手,最好的方式是我们先创建一个远程库。

首先,登录Github,点击右下角的New repository,创建一个新项目

在Repository name里填写这个项目的名字,可以选择在Description中添加对库的简要描述,然后默认public公开(private要付费,充分贯彻github的开源精神),最后选择initialize this repository with a README,这个选项会添加一个markdown格式的文件,通过具体描述,帮助别人理解这个库的内容。最后点击Create repository,就完成了你的第一个远端库的创建!

下一步只需在terminal内输入:

git clone https://github.com/AnnikaGeng/learn.git   #替换名字和刚创建的库的名字

稍等一会儿,我们就将刚才远程创建的名为learn的库克隆到本地了。此时你应该可以在本地找到一个名为learn的文件夹,里面已经有一个叫README.md的文件了,这就是我们刚才创建的markdown格式的文件。

4.学会提交代码到远程库

接下来就是我们这个简易教程的最后一步,提交代码环节,我们可以在刚刚那个learn文件夹里随意创建一个代码文件,比如用sublime Text创建一个python文件:

print("Hello,world")

保存为hello.py。

然后用terminal打开这个文件夹,可以在terminal中cd(change dictionary)到该文件夹,但是最简单的方法是选中文件夹直接右键,点最后一个选项:新建位于文件夹位置的终端窗口(New terminal at folder)。或者在system > preferences > keybord > shortcuts > services >files and folders 中设置new terminal at folder的快捷键。

打开之后依次输入以下代码:

git add hello.py                   #添加文件到暂存区
git commit -m "a new file" #提交所有暂存的改动,引号内写上此次提交的解释说明
git push origin master #将提交的内容推送到远程库

此时整个代码就已经推送完毕,可以在github中查看。

对add/commit/push的解释如下图:

平时我们在电脑里能看到的本地目录叫做工作区(working directory),里面是我们的本地文件。

通过git add 这个命令,我们把文件添加到了暂存区(stage),可以多次add。

当我们添加完所有的文件到暂存区,完成了一天的工作,可以只使用一个命令git commit,把今天的所有代码一次性提交到master分支,也就是如同我刚才提到的河流的主干一样的部分。

这时就完成了你本地文件的推送,要是想给其他人看到,和其他人一起工作,就需要把这个本地文件,推送到远端,通常我们叫这个远端为origin。

此时,再回到github网站,新的项目应该已经和本地的改动同步了,你可以在learn 这个库中,看到你刚才创建的hello.py文件。

更多的git操作可以参考:

1.廖雪峰的官方网站

2.https://git-scm.com/book/en/v2

10分钟入门git简易教程的更多相关文章

  1. 不用搭环境的10分钟AngularJS指令简易入门01(含例子)

    不用搭环境的10分钟AngularJS指令简易入门01(含例子) `#不用搭环境系列AngularJS教程01,前端新手也可以轻松入坑~阅读本文大概需要10分钟~` AngularJS的指令是一大特色 ...

  2. Markdown - Typora 10分钟入门 - 精简归纳

    Markdown - Typora 10分钟入门 - 精简归纳 JERRY_Z. ~ 2020 / 8 / 22 转载请注明出处! 目录 Markdown - Typora 10分钟入门 - 精简归纳 ...

  3. Apache Shiro系列三,概述 —— 10分钟入门

     一.介绍 看完这个10分钟入门之后,你就知道如何在你的应用程序中引入和使用Shiro.以后你再在自己的应用程序中使用Shiro,也应该可以在10分钟内搞定. 二.概述 关于Shiro的废话就不多说了 ...

  4. JavaScript 10分钟入门

    JavaScript 10分钟入门 随着公司内部技术分享(JS进阶)投票的失利,先译一篇不错的JS入门博文,方便不太了解JS的童鞋快速学习和掌握这门神奇的语言. 以下为译文,原文地址:http://w ...

  5. kafka原理和实践(一)原理:10分钟入门

    系列目录 kafka原理和实践(一)原理:10分钟入门 kafka原理和实践(二)spring-kafka简单实践 kafka原理和实践(三)spring-kafka生产者源码 kafka原理和实践( ...

  6. Git简易教程-安装及简单使用

    Git是一种版本控制器,在项目开发中可以用来托管代码 一.下载安装Git 1. Git下载 地址:https://git-scm.com/download/win 2. 安装 检验是否安装成功 电脑桌 ...

  7. Git简易教程(常用命令)

    本文章参考了Pro Git 1 Git简介 Linux内核开源项目有着众多参与者,为了提高开发效率,项目组于2002年开始启用分布式版本控制系统BitKeeper来管理和维护代码.在BitKeeper ...

  8. [入门到吐槽系列] Webix 10分钟入门 一 管理后台制作

    前言 本人是服务端程序员,同时需要兼职前端开发.常用的就是原生态的HTML.Javascript,也用过ExtJS.Layui.可是ExtJS变公司后非常难用.Layui上手还行,用过一段时间,会觉得 ...

  9. [入门到吐槽系列] Webix 10分钟入门 二 表单Form的使用

    前言 继续接着上一篇的webix入门:https://www.cnblogs.com/zc22/p/15912342.html.今天完成剩下两个最重要的控件,表单和表格的使用.掌握了这两个,整个Web ...

随机推荐

  1. Leetcode590. N-ary Tree Postorder Traversal

      590. N-ary Tree Postorder Traversal 自己没写出来   优秀代码: """ # Definition for a Node. cla ...

  2. Handlebars模板引擎

    介绍 Handlebars 是 JavaScript 一个语义模板库,通过对view和data的分离来快速构建Web模板.它采用"Logic-less template"(无逻辑模 ...

  3. Jmeter之断言

    Jmeter中的断言类似于LR中的检查点,是在请求的返回层面上加的一个判断机制.因为请求成功了,不代表结果就一定是对的,还要看返回(LR中亦如此,脚本回放没报错,不代表你的业务成功了,需要自己去相应的 ...

  4. 关于NSStringFromClass的一点见解

    今天做项目的时候遇到一个需求,就是子view视图弹出时,屏蔽掉父view的所有手势,然后想到用 UIGestureRecognizerDelegate代理方法,中间省一些文字(无奈脸),言归正传,NS ...

  5. iOS 判断两个颜色是否相同

    今天做项目的时候,遇到一个小问题,就是获取UIButton的背景颜色用来和已知颜色做对比,进行点击事件.去查了下文档,有个方法正好可以处理这个问题. bool CGColorEqualToColor ...

  6. ORM增删改查(django)

    单表操作: 一.添加 (1)方式一 from  mysite.models  import * def  add(request): book= Book(name="python" ...

  7. php使用urlencode对中文编码而引出的问题:urlencode和rawurlencode的区别

    事件背景: 之前做h5小游戏,需要后端输出用户的相关信息给前端,输出的内容有:用户id,用户昵称等字段,使用get方式传参.后端使用PHP语言对中文昵称进行格式化编码,使用的是常用的urlencode ...

  8. python执行时遇到 KeyError: b'somevar' 时需要想到的

    虽然这个问题很小,但我觉得很有必要单独拿出来强调一下. 这样在遇到类似错误的时候可以很快反应过来,进而节约了时间. 这里我拿 shelve 模块举例(shelve的作用大致就是把python变量存放到 ...

  9. Java基础——常用类之日期时间类

    如果有机会,请尝试Java8中全新的时间日期API!(参见Java8新特性随笔) 如果还是使用Java7及之前的版本,那么你可以尝试一些工具类(参考使用工具类相关的Hutool-DateUtil) 如 ...

  10. setInterval只执行一次的原因

    setInterval(arrow(),) 改为: setInterval(arrow,) 原因: arrow()这是一个函数调用,函数调用就会有返回值, 而arrow()没有返回值,所以这里的arr ...