【实践练习一】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 ...
随机推荐
- Batch Normalization--介绍
思考 YJango的前馈神经网络--代码LV3的数据预处理中提到过:在数据预处理阶段,数据会被标准化(减掉平均值.除以标准差),以降低不同样本间的差异性,使建模变得相对简单. 我们又知道神经网络中的每 ...
- springboot学习笔记-thymeleaf
Thymeleaf的介绍 简单说, Thymeleaf 是一个跟 Velocity.FreeMarker 类似的模板引擎,它可以完全替代 JSP .相较与其他的模板引擎,它有如下三个极吸引人的特点: ...
- Codeforces gym101612 E.Equal Numbers(贪心)
传送:http://codeforces.com/gym/101612 题意:给出一个大小为n的序列a[i],每次选其中一个数乘以一个正整数,问进行k步操作后最少剩下多少种数字,输出0≤k≤n,所有的 ...
- go操作redis
package main import ( "fmt" "github.com/gomodule/redigo/redis" ) func main() { c ...
- 关于文件命名,你必须要知道的(浏览器报错:net::ERR_BLOCKED_BY_CLIENT)
坑爹的,今天在写完页面,用各个浏览器测试的时候,火狐.谷歌都是正常的,QQ浏览器出幺蛾子了,在使用兼容模式的时候页面正常,使用急速模式的时候部分页面正常,点击跳转到其他页面的时候就出错了,打开控制台一 ...
- Win10手记-为应用集成日志工具Logger
日志工具由来已久,是很受大家欢迎的debug工具.其中.NET平台上很出名的是log4net,但是由于Windows 10通用应用项目没有了System.Configuration引用,所以也就不能很 ...
- Java 基础学习总结(一)抽象类和接口
接触java的时间不是很长,以前对抽象类和接口的定义和区别也是模糊不清,最近拿起学校的教程读了起来,也参阅了网上的博客大神理解和总结,于是决定自己按照自己的理解来总结一下. 抽象类(半成品) 一般 ...
- Java高并发情况下的锁机制优化
本文主要讲并行优化的几种方式, 其结构如下: 锁优化 减少锁的持有时间 例如避免给整个方法加锁 1 public synchronized void syncMethod(){ 2 othercode ...
- 关于jQuery的一些东西
1.jQuery的选择器学习 基本选择器 id选择器 $("#id名") 返回的是存储了指定的HTML元素对象的数组 标签 ...
- CentOS 6.5 网络服务器功能的实现②:运用光盘(镜像)制作一个本地yum源
在用Linux安装软件时(rpm安装方式),有时会出现“包依赖”的现象.因此,我们可以用yum工具来实现一次性安装所有rpm工具包的功能. 实例:在此服务器上用yum的方式安装DHCP服务和TFTP服 ...