Git与github使用

现在才开始写git和github使用教程给人以小菜鸟的感觉。。。

事实上,我注册GitHub已经多年了,编程经验也有五年了,然而真正用上git的可能几乎为0,说句公道话,我是做个人开发的,也没有开发过什么高大上的开源工具,故而github对我来说是那么的陌生,有大佬说:如果程序员不会用git,那简直连编程的门槛都没进呢。

好吧,我用了好多年的百度云备份代码,惭愧。

马上要步入工作(团队开发)的我,是时候做个example学习一下Git与github的使用了。

我将会把我的毕设——华尔街APP使用git托管到github上

Git与github使用教程

首先,要知道git和github完全是两回事

git:是一款软件,工具
github:是一个平台网站

关于Git的小故事

Git的作者就是大名鼎鼎的Linus先生,他因为创立了Linux内核而名声大噪,Git的诞生与Linux密不可分。

Linux作为开源操作系统 ,代码需要由全世界来维护,那么首先要解决的就是如何让全世界人去开发一款软件(Linux),这就需要用到分布式管理的概念了。

事实是,在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码!

随着Linux代码不断的膨胀,Linus不得不考虑使用管理服务了,当时流行的版本管理工具有SVN,CVS,直至今日他们依然广泛被使用,但众所周知,Linus老人家“强迫症”严重,他坚决反对使用他们,理由是他们是非分布式,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。

当时Linus算是妥协的选择了一款商用的版本管理工具BitKeeper——BitKeeper的东家BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统。

但是跟着Linus混的大佬们都是什么人?那都是极具黑客色彩的“互联网梁山好汉”,也许是出于刺激感,也许是对商业软件的不满,以开发Samba的Andrew为首的大佬们试图破解BitKeeper的协议,后来东窗事发,被BitMover发现,一怒之下收回Linus社区BitKeeper的使用权。

其实只要Linus一个小小道歉,就可以挽回BitKeeper,然而,他的性格,可能会吗,哼?Linus不仅没有道歉,还怒喷Bitkeeper就是个辣鸡,Linux社区不需要他。

后来的事,Linus花了一个月开发了Git——分布式版本控制工具!仅仅一个月?!大佬不愧是大佬,什么授权,什么商业公司,不存在的!你不给我用的东西,我还不屑什么授权呢,没有就写一个啊!不就是个版本控制工具嘛?很难吗?

Git迅速成为最流行的分布式版本控制系统,尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。

历史就是这么偶然,如果不是当年BitMover公司威胁Linux社区,可能现在我们就没有免费而超级好用的Git了。

Git和CVS,SVN最大的区别在于分布式,每一台安装git的电脑都有本地“缓存”版本——镜像,即使没有网络的情况下,代码版本会被保存在本地,一旦连上了远程git服务,立刻同步上去。

Github的后端使用的就是git!而github应该被定义为一个网站——平台。

知乎有一段子是这么解释git和GitHub的关系:

Git好比魔兽争霸,GitHub好比对战平台。

使用前准备

下载git:https://git-scm.com/downloads

安装好后找到git安装目录下的bin目录,将bin配置到PATH环境变量里,打开windows cmd,输入sh,git,bash三个命令,应该都奏效了,输入exit退出去。

进入:https://github.com/

注册登陆好,然后点击右侧新建按钮:

进入新建项目的页面后输入你想要新建项目的相关信息,选择一个协议,一般用MIT的就可以,点击create Repository即可。

这样项目已经在github上生成了。

建立SSH连接

熟悉github的都知道,习惯上我们使用ssh协议连接github来管理我们的项目,这种感觉就是Linux ssh远程控制的阉割版。你只能管理项目,不能控制一台虚拟设备。

打开windows命令行输入git安装后携带的命令:sh

进入了sh界面,这其实就是个linux的bash

创建ssh密钥:

1ssh-keygen -t rsa -C "devilyouwei@gmail.com" 2

接下来终端提示,不停按回车过去就行。

他会提示你密钥保存目录,去找到那个“id_rsa.pub”文件

一般是在用户目录下的ssh目录下。打开后复制全部内容!

注意:这里复制一长串密钥开头应该是ssh-rsa字样

重新进入github网站点击个人头像下拉找到“setting”进入设置界面

点击左侧

点击“new ssh key”按钮

随便输入一个标题,然后粘贴刚刚复制的一长串密钥,并且保存即可!

离开GitHub网站,回到本地操作。

测试连接

打开windows cmd命令行,输入:

1ssh -T git@github.com 2

结果应当如下:

继续配置用户名和邮箱认证:

1git config --global user.name "devilyouwei" 2 3git config --global user.email devilyouwei@gmail.com 4

这里输入的就是GitHub注册的邮箱和用户名,需要同步!

项目管理

在成功连接上GitHub后,项目的管理的功能就很多了,比如:

github 初始化到 本地

我们称本地项目的目录为仓库,现在要把刚刚在GitHub新建的项目同步到本地的仓库来(项目目录为空的情况下)。

首先本机没有项目目录就先创建目录,一般与github创建的项目名相同比较好,cmd下切换到仓库目录下输入命令:

1git init 2 3git remote add origin git@github.com:devilyouwei/WallStreet.git 4

第一行命令origin后面跟着的是项目地址,如何获得,在GitHub点击

这一步是将远程项目源添加到本地,然后初始化git,注意初始化应该在仓库(项目)目录下执行,执行完后目录里多一个隐藏的目录“.git”,不用理会,有了他就能在当前目录为所欲为了!哦不,我是说已经关联好了。

注意:如果发现项目同步错了目录,应该切换到想要同步到的目录下,输入git init,重新pull接下来

第一次从远程同步到本地使用pull:

1git pull origin master 2

现在去看看目录,已经将远程项目文件同步到本地了(一般有个readme.md文件)!

本地 到 github

在项目目录下新建一个index.js文件,随便写点代码进去。

输入:

1git status 2

提示有一个文件没有commit上去,标记为红色,并告诉你用git add把他添加进去。

再次输入:

1git add -A 2 3git status 4

绿色表示已经添加可以commit到GitHub上了

输入:

1git commit -m "a new index.js for the project" 2 3git push origin master 4

commit后面跟着的是本次版本更新的描述,然后使用与pull相对的push提交至服务器即可。

查看GitHub项目:

完成本次提交!

github 更新到 本地

有这么一种场景,开发者在多台电脑上开发同一个项目,或者多人开发不同的模块,例如我在公司写了一些代码,按照上述操作同步到了github上,回到家后由于远程代码版本变了,需要先将远程代码反向同步回家里的电脑上,操作如下:

1git remote -v 2

可以看到origin仓库的fetch和push版本,这里我们使用fetch将远程代码逆向同步到本地,称之为合并到本地或更新到本地

1git fetch origin master 2

比较与本地仓库中代码的区别,我这里两边代码一样,终端并不会输出什么

1git log -p master.. origin/master 2

同步(更新合并)

1git merge origin/master 2

正如之前比较结果所述,两边代码相同,所以提示:“already up to date”。

注:以上所述origin为仓库名,master为分支名。

代码交流 2021