Git与Github使用

马上要步入工作(团队开发)的我,是时候做个example学习一下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密钥:

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

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

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

这里写图片描述

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

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

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

点击左侧

这里写图片描述

点击“new ssh key”按钮

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

这里写图片描述

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

测试连接

打开windows cmd命令行,输入:

ssh -T git@github.com

结果应当如下:
这里写图片描述

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

git config --global user.name "devilyouwei"

git config --global user.email devilyouwei@gmail.com

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

项目管理

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

github 初始化到 本地

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

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

git init

git remote add origin git@github.com:devilyouwei/WallStreet.git

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

这里写图片描述

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

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

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

git pull origin master

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

本地 到 github

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

输入:

git status

这里写图片描述

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

再次输入:

git add .

git status

这里写图片描述

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

输入:

git commit -m "a new index.js for the project"

git push origin master

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

查看GitHub项目:

这里写图片描述

这里写图片描述

完成本次提交!

撤回commit

# 不还原代码
git reset --soft HEAD^
# 代码也给你还原了!谨慎用
git reset --hard HEAD^

github 更新到 本地

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

git remote -v

这里写图片描述

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

git fetch origin master

这里写图片描述

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

git log -p master.. origin/master

同步(更新合并)

git merge origin/master

这里写图片描述

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

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

git 切换分支

想换个分支?

# 不强制
git checkout development
# 强制
git checkout -b development

git 指定ssh

电脑上有多个ssh,连接到了不同平台或账户?
可以对一个项目单独指定ssh的key

git config core.sshCommand "ssh -i ~/.ssh/newsshname -F /dev/null"`

git 指定username和email

多个项目,又多个账户?每个项目用个独立账户?

git config user.name "development"
git config user.email "development@example.com"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

devilyouwei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值