前端工具篇:浅谈Git和GitHub

首先指出,GitGithub不是一个概念,完全没有可比性。

Git可以说是每个程序员必备的技能,Github是检验一个程序员是否合格的标准。反正这东西虽然不一定要十分精通,但一定要能懂会用。Git是一个实用的版本控制(代码管理)工具,Github则是一个仓库托管(代码共享)平台,全国大神聚集的地方,装逼神器。

关于Git的详细教程建议阅读其官方文档,中文版,就是有点多,对于一般人来说阅读前三章即可。本篇文章主要介绍下面这几个方面:

  • Git的基本使用
  • Git与GitHub搭配使用
  • Git分支
  • GitHub静态站点

这是我总结的对于一般开发人员来说,比较实用的几个方面。本篇文章,只会引入几个概念和一些比较重要的思想,不是一篇纯教程。

Git的基本使用

Git是一个分布式版本控制工具,对应的SVN则是集中式版本控制工具。如果你不知道SVN,那也没必要去学它了(除非工作需要),直接学Git可能更实用一点。

分布式和集中式

简单的说,集中式,就是将项目集中在一台服务器上进行管理。而分布式就是将项目分布在各台计算机或服务器中进行管理。分布式管理中每台计算机都是一个完整的仓库,而集中式管理中只能在服务器中进行版本管理。听起来可能很模糊,详细请参考官方介绍

基本使用

  • 配置用户信息
# 名称和邮箱随意, Git仅用于记录身份
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
  • 基本命令
# 在项目根目录下运行 初始化一个本地仓库
$ git init
# 跟踪文件 或将文件添加到 暂存区
$ git add 文件名
# 提交 将暂存区的文件提交到版本控制中
$ git commit -m "提交信息"

# 查看当前版本状态 有事没事多敲敲
$ git status

这是一个最基本的操作流程。但是实际使用中,总是不会如此顺利,会遇到各种问题和需求。建议:

  • 遇到问题要多使用--help-h参数查看帮助
  • 多使用git status命令
# 比如查看push相关的用法
$ git push -h
# 或
$ git push --help

这里补充一下,Git有三个工作区域:工作目录、暂存区、Git仓库。我们写代码可以直接操作的是工作目录,通过git add将文件添加到暂存区git commit指令将文件提交到Git仓库

实用技巧

  • 放弃本次工作目录中的修改
$ git checkout -- 文件名
  • 将暂存区的文件移除到工作目录
$ git reset HEAD 文件名
  • .gitignore不起作用
# 移除git仓库中所有文件,不会从真实的目录移除
$ git rm -r --cached .

这种情况是Git仓库中已经有了(跟踪了)某个文件,然后又修改了.gitignore文件,所以需要用上面的命令将要忽略的文件从Git仓库中移除。.代表移除所有文件。

  • 执行命令报错Unable to create '/.git/index.lock': File exists之类的
# 删除该文件即可
$ rm -rf .git/index.lock

出现该问题一般都是之前手动或其他问题而终止了某条命令。

Git与GitHub搭配使用

对于个人来说,Git的远程仓库大多都是github。要将一个本地仓库推送到github上,首先必须github上要存在一个与本地同名的仓库,并且与本地仓库关联起来。

基本使用

你有两种方式可以选择,第一就是首先在github上建立项目仓库,然后克隆到本地使用。

$ git clone git@github.com:username/project-name.git

第二种就是本地已经存在一个项目仓库,然后先在github上建立一个同名的仓库,并关联起来。

# 添加远程仓库
$ git remote add origin git@github.com:username/project-name.git
# 推送到远程服务器
$ git push -u origin master

如果push失败,先pull更新到本地,然后再执行上面的push命令。这里的origin是远程仓库的名称,也是默认的。一个本地的Git仓库可以添加多个远程仓库,远程仓库名用来区分每个远程仓库(一般可能用不上,对于个人来说,远程仓库一般都是github一个)。

配置SSH

如果要使用github,配置一个SSH公钥也是必不可少的。如果你执行某项操作提示你没有权限,那么很有可能就是没有正确配置SSH公钥。

一台本地计算机对应一个SSH公钥,一个github账号可以添加多个SSH公钥,也就是说可以通过多台电脑来管理一个github账号下的项目仓库。

# 生成SSH公钥 一路回车即可
$ ssh-keygen
# 查看生成的SSH公钥
$ cat ~/.ssh/id_rsa.pub

然后,复制所有查看到的内容,添加到github上即可。

Git分支

Git的另一个重要的特性就是分支,要学好分支,必须得先弄懂Git分支的本质。

理解分支

每建立一个Git仓库,默认就有一个master分支(主分支)。Git中的分支本质上就是一个指向commit对象的指针。每commit一次,就对应一个提交记录(暂且就叫版本号),把这些提交记录想象成一条串联起来的方块,而分支就是指向这些方块的指针。

因此,在一个分支上的所有修改和提交只会将当前分支的指向往最新的版本移动,而其他分支依旧指向原来的提交版本,不会有任何影响。

Git中可以有很多分支,HEAD指针指向当前的分支,建议参考官方解释,图文例子很形象,一定要理解它的本质和原理。

基本操作

# 创建分支
$ git branch 分支名
# 创建并切换到分支
$ git checkout -b 分支名

# 删除分支
$ git branch -d 分支名
# 合并其他分支到当前分支
$ git meger 分支名

对于新手,建议不要在重要的项目上试用各种分支操作,不然你会越高越乱,最后可能就回不去了。

GitHub静态站点

github有一个十分强大的特性,就是每一个仓库,都可以是一个可访问的静态站点,也就是说,你可以将html文件放在仓库中,可以通过域名的方式来访问这个页面。

github提供一个主站点,它的仓库名必须是username.github.iousername就是你自己的用户名),默认访问的域名是username.github.io,而且还可以配置自己的域名(比如baidu.com,前提是这个域名是你的)。其他项目站点都只能通过username.github.io/project-name的形式访问。大多数人都会用这个主站点搭建一个个人的主页或博客之类的,网上与之相关的教程很多,对于非专业的前端开发人员,大多就是采用hexo来快速搭建自己的博客系统。有兴趣的可以自己百度hexo关键字,会有很多相关的教程。

其他项目有三种方法将仓库配置为可访问的站点,具体请参考这里

后记

Git对于刚接触的人可能并不友好,一路走来,我不知道弄坏了多少个项目仓库。最好是身边有会的人指导,这样会少走很多弯路。我的前端开发之路只有我一个人,而且所有东西全部都是靠自学,吃过的苦踩过的坑也是不计其数。

到现在,也算是真正步入前端这个行业了。知道前端需要学些什么,也知道一些东西的基本用法,自学的时候就会有一个比较明确的方向。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容