初识Git与Github
Git
说到Git你或许不是了解,但是Linux系统你一定听过,Git就是Linux系统创始人林纳斯·托瓦兹一手创造出来的,奠定了他在编程界大神的地位。
Git的诞生
这是一个传奇故事,时间定格到2005年,当时linux再使用一个叫做BitKeeper的版本控制工具,BitKeeper开发商在这一年决定不再免费提供给linux社区使用,linus当即伸出了中指,于是两周后Git诞生了,一个月之内Linux的源码已经由Git托管。
Git的优点
git是国外开源版本库,不需要自己搭建服务器,你在上面搭建上传的工程代码都是公开的,谁都可以访问,可以设置团队成员分配修改的权限。如果要像SVN一样指定的人可以访问Git就需要收费了,SVN需要你有一台服务器,上面安装SVN Server实现版本控制
- 快速
如果你每移动一下鼠标都要等待五秒,是不是很受不了?版本控制也是一样的,每一个命令多那么几秒钟,一天下来也会浪费你不少时间。Git的操作非常快速,你可以把时间用在别的更有意义的地方。
- 离线工作
在没有网络的情况下如何工作?如果你用SVN或者CVS的话就很麻烦。而Git可以让你在本地做所有操作,提交代码,查看历史,合并,创建分支等等。
- 回退
人难免犯错。我很喜欢Git的一点就是你可以“undo”几乎所有的命令。你可以用这个功能来修正你刚刚提交的代码中的一个问题或者回滚整个代码提交操作。你甚至可以恢复一个被删除的提交,因为在后端,Git几乎不做任何删除操作。
- 省心
你有没有丢失过版本库?我有,而那种头疼的感觉现在还记忆犹新。而用Git的话,我就不必担心这个问题,因为任何一个人机器上的版本都是一个完整的备份。
- 选择有用的代码提交
当你把纽带,冰块还有西红柿一起扔进搅拌机的时候至少有两个问题。第一,搅拌过后,没有人知道之前扔进去了些什么东西。第二,你不能回退,重新把西红柿拿出来。同样的,当你提交了一堆无关的更改,例如功能A加强,新增功能B,功能C修复,想要理清这一堆代码到底干了什么是很困难的。当然,当发现功能A出问题的时候,你无法单独回滚功能A。Git可以通过创建“颗粒提交”,帮你解决这个问题。“staging area”的概念可以让你决定到底那些东西需要提交,或者更新,精确到行。
- 自由选择工作方式
使用Git,你可以同时和多个远程代码库连接,“rebase”而不是"merge"甚至只连接某个模块。但是你也可以选择一个中央版本库,就像SVN那样。你依然可以利用Git的其他优点。
- 保持工作独立
把不同的问题分开处理将有助于跟踪问题的进度。当你在为功能A工作的时候,其他人不应该被你还没有完成的代码所影响。分支是解决这个问题的办法。虽然其他的版本控制软件业有分支系统,但是Git是第一个把这个系统变得简单而快速的系统。
- 随大流
虽然只有死于才随着波浪前进,但是很多时候聪明的程序员也是随大流的。越来越多的公司,开源项目使用Git,包括Ruby On Rails,jQuery,Perl,Debian,Linux Kernel等等。拥有一个强大的社区是很大的优势,有很多教程、工具。随着开源的热潮越来越汹涌,使得类似于Github这样子的开源网站,受到更多更多程序员的喜爱与青睐,Git是时代选择的必然结果。
Github
GitHub 是一个面向开源及私有软件项目的托管平台,因为只支持 Git 作为唯一的版本库格式进行托管,故名 GitHub。GitHub 于 2008 年 4 月 10 日正式上线,除了 Git 代码仓库托管及基本的 Web 管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。目前,其注册用户已经超过350万,托管版本数量也是非常之多,其中不乏知名开源项目 Ruby on Rails、jQuery、python 等。
Github趣事
2013年1月15日晚间,全球最大的社交编程及代码托管网站GitHub突然疑似遭遇DDOS攻击,访问大幅放缓,该网站管理员经过日志查询,发现是来自12306的抢票插件用户洪水般的访问导致GitHub出现问题。该事件加上当初知乎吵架事件,使得Github在国内的发展像炸开的锅一样,拦都拦不住。
Git的安装
- Window
下载Git
配置ssh key
ssh-keygen -t rsa -C "yourid@xxmail.com"
然后连续按回车键3次
出现以上图片说明已经在本地创建好ssh key了
路径在C:\Users\admin.ssh
然后使用文本编辑器打开id_rsa.pub,然后把里边的内容完全复制
然后登陆Github官网
点击设置选项
然后把刚刚复制的ssh key复制进去
完成了以上步骤检测一下是否已经成功链接上Github
$ ssh -T git@github.com
admin@iTgoyo-PC MINGW32 ~/Desktop
$ ssh -T git@github.com
The authenticity of host 'github.com (192.30.255.112)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)?
输入yes
- Mac OS
基本和上面没差
打开终端,输入
cd ~/.ssh
如果存在,先将已有的ssh备份,或者将新建的ssh生成到另外的目录下
如果不存在,通过默认的参数直接生成ssh:
ssh-keygen -t rsa -C xxxxx@gmail.com(注册github时的email)
(输入完成后,按enter健即可,命令行会自动提示下面这一行👇,接下来的命令行一路按enter健即可)
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/twer/.ssh/id_rsa):
Created directory '/Users/twer/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/twer/.ssh/id_rsa.
Your public key has been saved in /Users/twer/.ssh/id_rsa.pub.
The key fingerprint is:
18:16:11:c9:01:6c:48:09:7f:27:66:43:0d:7f:3f:84 xxxxx@gmail.com
The key's randomart image is:
+--[ RSA 2048]----+
|.o.++=== |
|.ooo.+. . |
| ..* = E . |
| o = + o |
| . S o |
| . |
| |
| |
| |
+-----------------+
此时会在你的电脑里生成一个.ssh的文件,里面有你的ssh key的信息,如果需要复制这个信息,可以在命令行里输入 pbcopy < ~/.ssh/id_rsa.pub,这个是复制的命令,然后打开一个文本文件,粘贴即可
过程参考Windows
对于Github的初学者的建议
推荐两本Github入门
自我感觉刚入门Github的时候没必要逼着自已一定要使用命令行敲完代码,然后创建仓库,提交信息,上传代码。
因为图形化界面的Git工具很多
个人推荐官方的Github For Desktop
当然也有其他童鞋觉得SourceTree也是不错的选择,看自己爱好吧,工具而已,自己喜欢就好。
有童鞋反馈说Github For Desktop安装比较慢的问题,可以使用LanternFQ,如果你觉得速度不错,想办理会员版的话可以使用我的推荐码2CR4W2进行购买专业版,这样子我们都彼此会多获得三个月的会员时间
提交代码到仓库
- 先在Github官网上创建自己的仓库
以下我拿桌面版的Github来进行演示
即可下载到本地
即可打开到本地Github项目的仓库
我们随意改变一下工程的内容,例如以下,我新增了一个txt文本文件
再点开客户端
此时客户端已经检测到内容的改变,当你想把本地的资源提交到远程的仓库时
同步完成了之后你就会发现Github仓库上面已经有你刚刚提交的信息了
推荐常见的Git客户端
1. GitKraken
-
视觉交互和提示
-
100%单机
-
支持多个配置文件
-
支持单点击撤销和重做功能
-
内置的合并工具
-
快速和直观的搜索工具
-
很容易适应用户的工作空间,同时支持子模块和Gitflow
-
与用户的GitHub的或Bitbucket帐户集成
-
键盘快捷键以及其它更多。
官方网站:https://www.gitkraken.com/
2. Git-cola
Git-cola是一个功能强大的、可配置的用于Linux的Git客户端,为用户提供了时尚的GUI。它用Python编写的,并依据GPL许可证发布。
Git-cola接口包括一些可以根据用户愿望被隐藏和重新安排的协作工具。它还为用户提供了许多有用的快捷键。
它的附加功能包括:
-
多个子命令
-
自定义窗口设置
-
配置和环境变量
-
语言设定
-
支持自定义的GUI设置
官方网站:http://git-cola.github.io/
3. SmartGit
SmartGit也是适用于Linux,Mac OS X和Windows的跨平台、功能强大又流行的GUI Git客户端。被称为是专业人士的Git,它能够让用户掌控日常的Git挑战,并通过高效的工作流程提高他们的生产力。
用户可以在他们自己的代码仓库或其他托管服务提供商中使用它。它具有以下出色的特点:
-
支持Git pull请求和注释
-
支持SVN仓库
-
附带Git流,SSH客户端和文件比较/合并工具
-
与GitHub,BitBucket和Atlassian Stash强烈整合
官方网站:http://www.syntevo.com/smartgit/
4. SourceTree
SourceTree 是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端管理工具,同时也是Mercurial和Subversion版本控制系统工具。支持创建、克隆、提交、push、pull 和合并等操作。
SourceTree拥有一个精美简洁的界面,大大简化了开发者与代码库之间的Git操作方式,这对于那些不熟悉Git命令的开发者来说非常实用。
它具有以下出色的特点:
-
通过一个简单的用户界面即可使用所有的Git命令
-
通过一次单击,即可管理所有的Git库,无论是托管的还是本地的
-
通过一次单击,即可进行commit、push、pull、merge等操作
-
一些先进的功能,如补丁处理、rebase、shelve、cherry picking等
-
可以连接到你托管在Bitbucket、Stash、Microsoft TFS或GitHub中的代码库