以前经常在同学大神那听说过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. Servlet的补充知识

    ServletContextAware是获取ServletContext一个接口.只需要实现此接口重写里面的setServletContext方法,spring在初始化的时候通过xmlClasspat ...

  2. bash编程-sed

    sed(Stream Editor)是Linux系统下的一个文本流编辑器,它将文本文件内容逐行读取到标准输出,并将此行内容写入模式空间(pattern space),然后按照给定的地址定界和命令处理匹 ...

  3. String、StringBuffer、StringBuild的区别

    他们之间的区别主要在两个重大方面 一.处理速度上 StringBuild > StringBuffer > String 原因: String : 它定义为字符串的常量,定以后不能修改 S ...

  4. word文档的python解析

    主要两块,第一个是文件类型的转换,第二个是用docx包去对word文档中的table进行parse 1. 文件格式装换 因为很多各种各样的原因,至今还有一些word文档是doc的格式存的,对于这种,如 ...

  5. githug rename_commit 修改已经commit但还没push的一条message

    githug 第 45 关, 一开始对 git rebase -i 这个东西有误解, 记录一下正确的用法 ddmobadeMac-mini:git_hug ddmoba$ githug reset 4 ...

  6. 五花八门的CSS

    一.颜色 rgba(0, 0, 0, 0.5) rgba括号中前3个数字代表着 red green blue三种颜色的rgb值,0-255,最后一个是设定这个颜色的透明度即alpha值.范围从0到1, ...

  7. 在Java Web中使用Spark MLlib训练的模型

    PMML是一种通用的配置文件,只要遵循标准的配置文件,就可以在Spark中训练机器学习模型,然后再web接口端去使用.目前应用最广的就是基于Jpmml来加载模型在javaweb中应用,这样就可以实现跨 ...

  8. java.io.IOException: No space left on device 错误

    今天碰到比较奇怪的问题: 7/05/14 19:20:24 INFO util.Utils: Fetching http://192.168.31.160:33039/jars/spark_study ...

  9. Swift5 语言指南(十八) 可选链接

    可选链接是一个查询和调用当前可选的可选项的属性,方法和下标的过程nil.如果optional包含值,则属性,方法或下标调用成功; 如果是可选的nil,则返回属性,方法或下标调用nil.多个查询可以链接 ...

  10. Linux快速目录间切换cd pushd popd

    1.   cd -     当前目录和之前所在的目录之间的切换 2.   cd + Alt . 用上次命令的最后一个目录路径 要用上上次命令的最后一个目录,就Alt+.两次就可以了 3.   push ...