【实践练习一】Git以及Github的使用
以前经常在同学大神那听说过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,
输入命令:git clone https://github.com/sefzu2015Gsetup/HelloWorld.git来把远程代码库克隆到本地。
然后输入ls,即可看到HelloWorld已经克隆下来了,进入该文件夹再ls -al,可以看到
然后把该文件夹里的文件都复制到上一层目录去,再把该文件夹删掉即可。这里要注意,隐藏文件不要忘了,不然会死很惨的╮(╯▽╰)╭。
接下去就是提交跟同步了,先输入“git add .” 把HelloWorld中所有的文件添加到提交中去,当然之前在Github创建仓库时选择了.gitignore为Android,所以Android项目中不需要托管管理就会被自动忽略掉。
这里提示warning,大概的意思是LF将被替换成CRLF,这应该是因为开发所选的操作系统不一样造成的原因。
然后输入:git commit -m "this is the first helloworld version",将所有文件提交到本地仓库中。
这里可以发现,它提示我们要输入邮箱,跟名字。因为它需要知道是谁完成了这次的更新,跟着提示的指令输入就行了,然后再重新输入提交的命令。
接下去就是最后一步了,输入"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的使用的更多相关文章
- 【软件工程实践一】git使用心得
第一次软工实践,我们需要做的是学习如何使用github,并将本地库的文件添加到远程库中,以下是我进行实践的工程. [一.git的安装及准备工作] 首先从http://msysgit.github.io ...
- 使用git和github管理自己的项目---基础操作学习[转]
原文: https://segmentfault.com/a/1190000003728094 我是通过看廖雪峰的git教程学习的,真的是极好的,以下是我学习过程中的总结,记录下来,方便自己参考以熟悉 ...
- 使用git和github进行协同开发流程
(本文假设各位已经对基本git的基本概念.操作有一定的理解,如无相关git知识,可以参考Pro Git这本书进行相关的学习和练习) 很多项目开发都会采用git这一优秀的分布式版本管理工具进行项目版本管 ...
- Pycharm中Git、Github的简单使用和配置
Pycharm中Git.Github的使用 PyCharm本身自带了git,稍微配置一下就可以很好的在图形界面下进行Python项目的版本控制 配置Git 在配置前先新建一个项目,当然也可以打开已有的 ...
- Git和Github的介绍、简单操作、冲突(上)
目的: 1.git与github简介 2.Git与SVN区别 3.Github 的简单使用 4.下载安装Git-20-64-bit.exe 5.Git常用命令 5.1Git命令使用场景 5. ...
- Git、Github、Gitkraken 学习笔记
<Git.Github.Gitkraken 学习笔记> 一.写在前面 1.参考资料 本文参考 <Pro Git> 一书. 在官网有免费在线版可供阅读:https://git-s ...
- 简单使用Git和Github来管理自己的代码和读书笔记
原文链接:http://my.oschina.net/bxxfighting/blog/378196 先注册github.com的账号官方网站: https://github.com/ 注册界面, ...
- git for windows 的默认工作路径(HOME)的设置以及Git与GitHub之间的SSH加密协议
1.安装及配置默认路径 Windows中从GitHub上面:https://git-for-windows.github.io/ 下载安装好git后(双击,改一下需要的安装路径,一路确定就好了),安装 ...
- git与github安装、配置、pull、push
操作系统是Ubuntu 16.04 LTS 64bit 1 安装git (1)安装 sudo apt-get install git-core (2)一些全局变量的初始化 在本地建立一个文件夹,然后做 ...
- 转:sublime上使用git连接github
"工欲善其事,必先利其器." 这是古人的教诲,也是一个高效率的工程师需要遵循的法则之一.从大学开始写Java使用了JBuilder,Eclipse,后来写PHP用了Zend,写Ja ...
随机推荐
- 有关PHPhash算法
https://www.cnblogs.com/shangzekai/p/4444169.html
- Django Model 基础
程序涉及到数据库相关操作时,一般都会这样: 创建数据库,设计表结构和字段 使用 pymysql 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行数据库操作 import pymysq ...
- 47_并发编程-线程python实现
一.Threading模块 1.线程的创建 - 方式一 from threading import Thread import time def sayhi(name): time.sleep(2 ...
- SQL注入之重新认识
i春秋作家:anyedt 原文来自:https://bbs.ichunqiu.com/thread-41701-1-1.html 引言 作为长期占据 OWASP Top 10 首位的注入,认识它掌握它 ...
- css插入背景图片底部有白边的解决方法
相信很多小伙伴遇到过用CSS插入背景图时,底部出现白边的情况,如下图: 个人总结了2个方法如下: 解决方法1:给图片都加上 vertical-align: middle属性.有时,移动端也会有类似 ...
- 如何使用spring配合mybatis配置多个数据源并应用?
使用多数据源的场景应该是很多的,如操作同一台服务器上不同的数据库,或者多地机器上的相同或不相同数据库. 虽然涉及到不同数据库时,我们也许可以通过跨库操作的方式,如 other.user 使用同一数据源 ...
- Docker - 配置DaoCloud的Docker加速器
由于众所周知的原因,从Docker Hub难以高效地下载镜像. 除了使用VPN或代理之外,最为有效的方式就是使用Docker国内镜像. DaoCloud是首个提供国内免费Docker Hub镜像的团体 ...
- 十大经典排序算法+sort排序
本文转自:十大经典排序算法,其中有动图+代码详解,本文简单介绍+个人理解. 排序算法 经典的算法问题,也是面试过程中经常被问到的问题.排序算法简单分类如下: 这些排序算法的时间复杂度等参数如下: 其中 ...
- Ext.Direct最新版源码下载地址
以前的地址用不了,现在地址更新为: 全平台: http://www.sencha.com/forum/showthread.php?67992-Ext.Direct-Server-side-Stack ...
- 进程间通信IPC-命名管道FIFO
FIFO又被称为命名管道,未命名的管道只能在两个相关的进程之间使用,而这两个相关的进程还要有一个共同创建了它们的祖先进程,但是FIFO,不相关的进程之间也能交换数据. FIFO是一种文件类型.通过st ...