前端工具篇:浅谈Git和Github
首先指出,Git
和Github
不是一个概念,完全没有可比性。
Git
可以说是每个程序员必备的技能,Github
是检验一个程序员是否合格的标准。反正这东西虽然不一定要十分精通,但一定要能懂会用。Git
是一个实用的版本控制(代码管理)工具,Github
则是一个仓库托管(代码共享)平台,全国大神聚集的地方,装逼神器。
关于Git
的详细教程建议阅读其官方文档,中文版,就是有点多,对于一般人来说阅读前三章即可。本篇文章主要介绍下面这几个方面:
- Git的基本使用
- Git与GitHub搭配使用
- Git分支
- GitHub静态站点
这是我总结的对于一般开发人员来说,比较实用的几个方面。本篇文章,只会引入几个概念和一些比较重要的思想,不是一篇纯教程。
Git的基本使用
Git
是一个分布式版本控制工具,对应的SVN
则是集中式版本控制工具。如果你不知道SVN
,那也没必要去学它了(除非工作需要),直接学Git
可能更实用一点。
分布式和集中式
简单的说,集中式,就是将项目集中在一台服务器上进行管理。而分布式就是将项目分布在各台计算机或服务器中进行管理。分布式管理中每台计算机都是一个完整的仓库,而集中式管理中只能在服务器中进行版本管理。听起来可能很模糊,详细请参考官方介绍。
基本使用
- 配置用户信息
1 |
|
- 基本命令
1 |
|
这是一个最基本的操作流程。但是实际使用中,总是不会如此顺利,会遇到各种问题和需求。建议:
- 遇到问题要多使用
--help
和-h
参数查看帮助。 - 多使用
git status
命令
1 |
|
这里补充一下,Git
有三个工作区域:工作目录、暂存区、Git仓库。我们写代码可以直接操作的是工作目录,通过git add
将文件添加到暂存区,git commit
指令将文件提交到Git仓库。
实用技巧
- 放弃本次工作目录中的修改
1 |
|
- 将暂存区的文件移除到工作目录
1 |
|
.gitignore
不起作用
1 |
|
这种情况是Git仓库中已经有了(跟踪了)某个文件,然后又修改了.gitignore
文件,所以需要用上面的命令将要忽略的文件从Git仓库中移除。.
代表移除所有文件。
- 执行命令报错
Unable to create '/.git/index.lock': File exists
之类的
1 |
|
出现该问题一般都是之前手动或其他问题而终止了某条命令。
Git与GitHub搭配使用
对于个人来说,Git
的远程仓库大多都是github
。要将一个本地仓库推送到github
上,首先必须github
上要存在一个与本地同名的仓库,并且与本地仓库关联起来。
基本使用
你有两种方式可以选择,第一就是首先在github
上建立项目仓库,然后克隆到本地使用。
1 |
|
第二种就是本地已经存在一个项目仓库,然后先在github
上建立一个同名的仓库,并关联起来。
1 |
|
如果push
失败,先pull
更新到本地,然后再执行上面的push
命令。这里的origin
是远程仓库的名称,也是默认的。一个本地的Git
仓库可以添加多个远程仓库,远程仓库名用来区分每个远程仓库(一般可能用不上,对于个人来说,远程仓库一般都是github
一个)。
配置SSH
如果要使用github
,配置一个SSH公钥也是必不可少的。如果你执行某项操作提示你没有权限,那么很有可能就是没有正确配置SSH公钥。
一台本地计算机对应一个SSH公钥,一个github
账号可以添加多个SSH公钥,也就是说可以通过多台电脑来管理一个github
账号下的项目仓库。
1 |
|
然后,复制所有查看到的内容,添加到github
上即可。
Git分支
Git
的另一个重要的特性就是分支,要学好分支,必须得先弄懂Git
分支的本质。
理解分支
每建立一个Git
仓库,默认就有一个master
分支(主分支)。**Git
中的分支本质上就是一个指向commit对象的指针**。每commit
一次,就对应一个提交记录(暂且就叫版本号),把这些提交记录想象成一条串联起来的方块,而分支就是指向这些方块的指针。
因此,在一个分支上的所有修改和提交只会将当前分支的指向往最新的版本移动,而其他分支依旧指向原来的提交版本,不会有任何影响。
Git
中可以有很多分支,HEAD指针指向当前的分支,建议参考官方解释,图文例子很形象,一定要理解它的本质和原理。
基本操作
1 |
|
对于新手,建议不要在重要的项目上试用各种分支操作,不然你会越高越乱,最后可能就回不去了。
GitHub静态站点
github
有一个十分强大的特性,就是每一个仓库,都可以是一个可访问的静态站点,也就是说,你可以将html
文件放在仓库中,可以通过域名的方式来访问这个页面。
github
提供一个主站点,它的仓库名必须是username.github.io
(username
就是你自己的用户名),默认访问的域名是username.github.io
,而且还可以配置自己的域名(比如baidu.com
,前提是这个域名是你的)。其他项目站点都只能通过username.github.io/project-name
的形式访问。大多数人都会用这个主站点搭建一个个人的主页或博客之类的,网上与之相关的教程很多,对于非专业的前端开发人员,大多就是采用hexo
来快速搭建自己的博客系统。有兴趣的可以自己百度hexo
关键字,会有很多相关的教程。
其他项目有三种方法将仓库配置为可访问的站点,具体请参考这里。
后记
Git
对于刚接触的人可能并不友好,一路走来,我不知道弄坏了多少个项目仓库。最好是身边有会的人指导,这样会少走很多弯路。我的前端开发之路只有我一个人,而且所有东西全部都是靠自学,吃过的苦踩过的坑也是不计其数。