以前经常在同学大神那听说过Github这神器,虽敬佩久已,奈何却无缘使用。好吧,我承认,主要还是不会用,一看网站全是英文的,想想还是不要为难自己了。然而现在还是要为难自己了,趁着早上刚学完,对Github有了初步的了解和上手,那就写篇随笔记录下。

1.Gitbub官网

  • 首先先注册账号密码,注册需要提供邮箱认证。这很简单,就不截图说明了。注册完登陆后找到右上角如图的符号,点击new organization。接下去按着提示说明来做接可以了。

  • 创建完后,会显示如图。找到图片上的invite someone,或者people,进行邀请组员。这边邀请根据用户名,邮箱都可以。邀请完等待对方同意就可以了。不过受邀请的一方需要在邮箱确定受邀。至于在网站有没有哪可以直接确认受邀的就不知道了,反正我英语不好,早上愣是找了半天没找到。

  • 接下去要将别人的代码库fork到自己小组的organization底下,这里就把https://github.com/sefzu2015/AutoCS fork到organization底下。

    • 首先先点击上面链接,到要fork的代码库的页面,找到如图按钮,点击,选择要fork到自己账户下的哪个organization下面就可以了。


好了,上面都是一些基本的操作。接下去试试看如何将自己本地的代码托管到Github上。

2.Git for windows

  • 首先,我们需要一个客户端Git工具,我用的是windows系统,所以这里就选择Git for windows。(这里不得不吐槽几句,我感觉自己只认官网下载这个是病,得治。没错,到官网下载是个好习惯,不过在官网无法下载的时候就不要死脑筋了。这软件在官网下需要翻墙,╮(╯▽╰)╭我居然傻乎乎的搞了几个小时,查什么如何翻墙啊,如何在官网下Git啊。我真服了自己了,最后居然还没搞定。终于受不了,找同学拷贝了一份。)
  • 下载的步骤就不说了,说多了都是泪。直接看看如何使用这个工具吧,用之前先看看一些基本的命令:
    • git init ------------在本地建立代码仓库。
    • git add -----------添加想要提交的代码,使用commit命令前的操作。
    • git commit -m "message" ----------真正去执行提交的操作。
    • git push "url" -----------将提交的代码同步到Github上。
    • git clone url -------------将远程版本库克隆岛本地。
  • 这几个命令在今天的实践中用到的最多的,当然还有很多命令。那些命令就在后面慢慢的熟悉提高吧。

3.HelloWorld托管到Github

  • 首先,登陆自己的Github账号,新建一个仓库,如图。

  • 创建好后显示的页面如图,找到右下角的Https clone url,点击复制。

  • 然后找到电脑HelloWorld项目的目录,打开Git bash,

    1. 输入命令:git clone https://github.com/sefzu2015Gsetup/HelloWorld.git来把远程代码库克隆到本地。

    2. 然后输入ls,即可看到HelloWorld已经克隆下来了,进入该文件夹再ls -al,可以看到

    3. 然后把该文件夹里的文件都复制到上一层目录去,再把该文件夹删掉即可。这里要注意,隐藏文件不要忘了,不然会死很惨的╮(╯▽╰)╭。

    4. 接下去就是提交跟同步了,先输入“git add .” 把HelloWorld中所有的文件添加到提交中去,当然之前在Github创建仓库时选择了.gitignore为Android,所以Android项目中不需要托管管理就会被自动忽略掉。

          这里提示warning,大概的意思是LF将被替换成CRLF,这应该是因为开发所选的操作系统不一样造成的原因。
    5. 然后输入:git commit -m "this is the first helloworld version",将所有文件提交到本地仓库中。

      这里可以发现,它提示我们要输入邮箱,跟名字。因为它需要知道是谁完成了这次的更新,跟着提示的指令输入就行了,然后再重新输入提交的命令。

    6. 接下去就是最后一步了,输入"git push origin master"就可以将提交的内容都同步到Github上去了。

      可以看到,提示我们输入Github的账号跟密码,输入完后到Github上HelloWorld的仓库,

      https://github.com/sefzu2015Gsetup/HelloWorld.git,刷新可以发现,已经把在本地创建的HelloWorld项目托管到Github上面去了。


       到此,就算完成了。上面的步骤看着虽然很少,貌似也很简单,但只有自己动手的才知道过程有多么不容易。这么说吧,原本以为看完Git基本教程,再自己动手试试老师布置的任务,最后写这篇博客,大概半天就能完成吧。结果呢,呵呵,我只想说,还是太年轻了。╮(╯▽╰)╭居然花了我一个早上,加下午,加小半个晚上。好吧,我承认,有大半时间是浪费在了从官网下载Git。(听说,Google过几年会回归大陆了,不知道真的假的,真的就好了╮(╯▽╰)╭,省得找国外官方资源这么麻烦)

       最后,推荐一个Git教程,感谢@schaepher 推荐。通俗,易懂,这教程真的非常棒。

       http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

4.Git小结

  • 这些内容是第二天来补上的,写完博客后,在逛同学的博客以及跟同学的交流时发现,好多他们操作过程中碰到的问题,以及一些步骤我都没碰到。而且,他们的操作步骤多了很多我没有做过的,难不成把本地仓库托管到Github上还有很多种方法不成?带着些疑问,以及同学碰到的问题,我做了一些测试。

首先第一个疑问是:ssh

  • 好多同学都有一个步骤是:ssh-keygen -t rsa -C "mail",然后还到Github做了一堆操作的。我没有这个步骤,感觉很奇怪,问了他们为什么要做那步,他们也很奇怪,为什么我没有做那步反而也能提交成功?于是,我到网上查了些资料:

为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。

  • 可是我并没有设置啊,最后也成功把本地仓库托管到Github了啊,那设置跟没设置有什么区别吗?我有个猜想,会不会是没设置的话公开的代码库就会被熊孩子给乱改一通了啊。恩,应该是这样,我居然还越想越觉得自己很有道理,还迫不及待的要了两个同学(一个有做SSH步骤,一个没有)的远程仓库URL来做实验。结果呢,报错提示两边都没有权限修改。╮(╯▽╰)╭

  • 后来上网百度了些资料才发现,自己确实是想多了,人家Github那么火,这种问题怎么可能没想到。亏自己昨天还按着作业做了一步添加队员到自己的organziation里的,当时有想过这个步骤就是为了团队合作开发的,怎么今天就没想起来呢。可是,如果不是队员的身份就不能修改远程仓库里的代码了?当然不是,Github还提供了一个fork功能。也多亏了今天的犯糊涂,不然都还不知道昨天照做的fork步骤的意义在哪。可是,SSH的问题还是没有得到解决啊,上文引用的解释里说了是防止被别人冒用,那应该就是防止账号密码被盗的情况下远程仓库被乱改的吧。毕竟不好意思找同学要账号密码。至于到底是不是这样,还是说我在多次实践的过程中,哪个步骤已经悄悄的把ssh配置好了,而我却没有注意到。具体如何,慢慢的在以后的使用学习中去探索吧。

第二个疑问是:git clone

  • 有的同学第一步并不是把远程仓库clone到本地来的,而是直接在本地的项目文件夹下创建仓库的,最后再来提交。我尝试着他们的做法,后来发现,如果自己第一步把git clone换成git init,接下去修改,add,commit,以及push的话,会报错。大概的意思是说,本地仓库跟远程仓库并没有关联在一起,所以需要多一句:git remote add origin ***,之后再Push就可以了。对比两种方式,我到.git文件下的config文件里查看了下,发现,如果一开始用的命令是git clone的话,config文件里文自动生成remote origin的相应配置。而如果用的是git init的话,config文件里则没有该项配置,所以需要手动配置。

  • 好了,就这些吧,有点乱,都是想到什么写什么,慢慢学习怎么写得有条理点吧。最后就是说个小小的注意事项:在Github上创建仓库时,记得要勾选自动创建README.md文件,或者在推送本地仓库前要手动创建,否则push时会报错。

       PS:第一次使用Markdown,赶快看看效果怎么样O(∩_∩)O。

【实践练习一】Git以及Github的使用的更多相关文章

  1. 【软件工程实践一】git使用心得

    第一次软工实践,我们需要做的是学习如何使用github,并将本地库的文件添加到远程库中,以下是我进行实践的工程. [一.git的安装及准备工作] 首先从http://msysgit.github.io ...

  2. 使用git和github管理自己的项目---基础操作学习[转]

    原文: https://segmentfault.com/a/1190000003728094 我是通过看廖雪峰的git教程学习的,真的是极好的,以下是我学习过程中的总结,记录下来,方便自己参考以熟悉 ...

  3. 使用git和github进行协同开发流程

    (本文假设各位已经对基本git的基本概念.操作有一定的理解,如无相关git知识,可以参考Pro Git这本书进行相关的学习和练习) 很多项目开发都会采用git这一优秀的分布式版本管理工具进行项目版本管 ...

  4. Pycharm中Git、Github的简单使用和配置

    Pycharm中Git.Github的使用 PyCharm本身自带了git,稍微配置一下就可以很好的在图形界面下进行Python项目的版本控制 配置Git 在配置前先新建一个项目,当然也可以打开已有的 ...

  5. Git和Github的介绍、简单操作、冲突(上)

    目的:   1.git与github简介  2.Git与SVN区别 3.Github 的简单使用 4.下载安装Git-20-64-bit.exe   5.Git常用命令 5.1Git命令使用场景 5. ...

  6. Git、Github、Gitkraken 学习笔记

    <Git.Github.Gitkraken 学习笔记> 一.写在前面 1.参考资料 本文参考 <Pro Git> 一书. 在官网有免费在线版可供阅读:https://git-s ...

  7. 简单使用Git和Github来管理自己的代码和读书笔记

    原文链接:http://my.oschina.net/bxxfighting/blog/378196   先注册github.com的账号官方网站: https://github.com/ 注册界面, ...

  8. git for windows 的默认工作路径(HOME)的设置以及Git与GitHub之间的SSH加密协议

    1.安装及配置默认路径 Windows中从GitHub上面:https://git-for-windows.github.io/ 下载安装好git后(双击,改一下需要的安装路径,一路确定就好了),安装 ...

  9. git与github安装、配置、pull、push

    操作系统是Ubuntu 16.04 LTS 64bit 1 安装git (1)安装 sudo apt-get install git-core (2)一些全局变量的初始化 在本地建立一个文件夹,然后做 ...

  10. 转:sublime上使用git连接github

    "工欲善其事,必先利其器." 这是古人的教诲,也是一个高效率的工程师需要遵循的法则之一.从大学开始写Java使用了JBuilder,Eclipse,后来写PHP用了Zend,写Ja ...

随机推荐

  1. [UWP]使用Popup构建UWP Picker

    在上一篇博文<[UWP]不那么好用的ContentDialog>中我们讲到了ContentDialog在复杂场景下使用的几个令人头疼的弊端.那么,就让我们在这篇博文里开始愉快的造轮子之旅吧 ...

  2. HttpClient Fluent API 高并发优化

    apache的httpcomponents-client 4.2之后提供了一套易于使用的facade API称为Fluent API,对于一般使用场景来说,使用起来非常简便,且性能也有一定保证,因为其 ...

  3. zoj4110 Strings in the Pocket(manacher)

    传送:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=6012 题意:给定两个串$S$和$T$,可以翻转$S$串中的任意一个子段, ...

  4. markdown上下左右,跳至行尾行首,重设快捷键

    概述 用markdown输入代码的时候觉得下面2件事非常不方便: (1)光标上下左右.(需要挪动手去按方向键) (2)光标跳至行尾和行首.(需要动手去按Home和End键) 为了简化,我特地更改了ST ...

  5. HttpWebRequst中https的验证处理问题

    最近在公司项目中使用了HttpWebRequst相关API,运行环境为.Net/Mono 2.0,是一款针对Unity平台的工具.开发过程中碰到了大家可能都碰到过的问题,Http还是Https? 为什 ...

  6. JavaScript中原型链的那些事

    引言 在面向对象的语言中继承是非常重要的概念,许多面向对象语言都支持两种继承方式:接口继承和实现继承.接口继承制只继承方法签名,而实现继承继承实际的方法.在ECMAScript中函数没有签名,所以EC ...

  7. LDA-线性判别分析(二)Two-classes 情形的数学推导

    本来是要调研 Latent Dirichlet Allocation 的那个 LDA 的, 没想到查到很多关于 Linear Discriminant Analysis 这个 LDA 的资料.初步看了 ...

  8. Firefox37.0.1+selenium 2.53+python3.6打开浏览器时报错NameError: name 'basestring' is not defined

    环境:Win7      Firefox浏览器版本37.0.1      Python36      Selenium2.53.0 在Pycharm里执行以下3行脚本: from selenium i ...

  9. salesforce零基础学习(八十九)使用 input type=file 以及RemoteAction方式上传附件

    在classic环境中,salesforce提供了<apex:inputFile>标签用来实现附件的上传以及内容获取.salesforce 零基础学习(二十四)解析csv格式内容中有类似的 ...

  10. 从零开始学 Web 之 Ajax(四)接口文档,验证用户名唯一性案例

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...