Github+Hexo+Next博客搭建之git和GitHub

博客已经搭建好了,自然可以趁热打铁写一些博客搭建的经验.一是方便自己以后查看,免得忘记.二是如果有人想了解博客搭建的过程,也正好有个参考.(如果SEO做的好,就有可能看到这篇文章).本文仅记录怎么去搭建博客,而不会解释每一步原理,有些东西我自己都没有搞的太清楚.毕竟我只是想借助博客这个平台记录平时工作的经验而已,细究相关方面知识并不是我的最终目的.

现在回头看博客的搭建过程,可以总结归纳以下几点. markdown,git和GitHub,github和coding部署, Hexo和Next了解, SEO

git和GitHub

接下来会按一下流程展开,本地git配置 => 关联远程仓库 => 初始化仓库.由于博主使用的Mac,执行命令时会和window下cmd有所区别.

git配置

  1. 完成git 的安装后,在使用之前需要配置一些全局参数, 如username和email.因为GitHub每次commit都会记录它们.

    git config --global user.name "username"
    
    git config --global user.email "email"
    
  2. 除了username和email外,还有许多自定义配置,示例:

    git config --global color.ui true    // git输出显示不同颜色
    
    git config --global ignorecase true    // git对仓库中的文件大小写敏感
    
    git config --global alias.st status    // git提供alias的功能,git status缩写为git st
    
    git config --global apply.whitespace nowarn // git忽略空白的变化
    
  3. 查看所有已经做出的配置:

    git config -l
    或
    git config --list
    

添加远程仓库

首先在github官网有自己的账号,之后就可以创建仓库了.

添加SSH Key

由于你的本地Git仓库和github仓库之间的传输是通过SSH加密的,所以需执行以下步骤:

  1. 本地创建ssh key.

    $ ssh-keygen -t rsa -C "your_email@youremail.com"
    

    后面的your_email@youremail.com改为你在github上注册的邮箱,之后会要求确认路径和输入密码,我们默认一路回车就行.成功的话会在~/下生成.ssh文件夹,进去打开id_rsa.pub,复制里面的key.

    ls -al ~/.ssh    // 查看是否存在id_rsa.pub,若存在,执行下一步;
    
    cd ~/.ssh    // 进入.ssh目录
    
    cat id_rsa.pub    // 查看复制id_rsa.pub
    
  2. 在GitHub里添加复制的id_rsa.pub. Settings => SSH and GPG keys =>New SSH key.操作之后,如图示:
    SSH
    Title任意填写,Key填入之前复制的id_rsa.pub.点击Add SSH key,添加已经完成.

  3. 验证是否成功,输入下列命令:

    ssh -T git@github.com
    

    如果是第一次的会提示是否continue,输入yes就会看到:You’ve successfully authenticated,but GitHub does not provide shell access.这就表示已成功连上github.

创建GitHub项目并添加远程仓库

登陆github账户后,点击New repository, 会有Create a new repository页面,填写相关信息,点击Create repository,可以根据官网提供的方式添加远程仓库.如下:

…or create a new repository on the command line

echo "# something" >> README.md    // 生成readme.md

git init    // 初始化本地仓库

git add README.md    // 将文件添加到暂存区

git commit -m "first commit"    // 将暂存区文件提交到仓库中

git remote add origin git@github.com:your-repository    // 添加你的远程仓库

git push -u origin master    // 将本地仓库推送到远程仓库

…or push an existing repository from the command line

git remote add origin git@github.com:your-repository

git push -u origin master

以上步骤完成了本地仓库到远程仓库的连接,接下来总结git的一些常用的命令

深入了解可参考 git中文

git的常用命令

git示意图

状态和工作区域

  • 三种状态

    已提交: 表示数据已经安全得保存在本地数据库中.

    已修改: 表示修改了文件,但还没保存到数据库中.

    已暂存: 表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中.

  • 三种工作区域

    Git仓库目录: 是Git用来保存项目的元数据和对象数据库的地方.这是Git中最重要的部分,从其他计算机克隆仓库时,拷贝的就是这里的数据.

    工作目录: 对项目的某个版本独立提取出来的内容.这些从Git仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改.

    暂存区: 是一个文件,保存了下次将提交的文件列表信息,一般在Git仓库目录中.有时也被称作’索引’.

  • 工作目录下的两种状态

    已跟踪: 指被纳入了版本控制的文件,在上一次快照中有它们的记录,在工作一段时间后,它们的状态可能处于为修改,已修改或已暂存.

    未跟踪: 工作目录中除了已跟踪文件以外的所有其它文件都属于未跟踪文件,它们既不存在与上次快照中,也没有放入暂存区.

    初次克隆某个仓库的时候,工作目录中的所有文件都属于已跟踪文件,并处于未修改状态.

Git工作流程

基本的 Git 工作流程如下:

  1. 在工作目录中修改文件.
  2. 暂存文件,将文件的快照放入暂存区域.
  3. 提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录.

如果 Git 目录中保存着的特定版本文件,就属于已提交状态. 如果作了修改并已放入暂存区域,就属于已暂存状态.如果自上次取出后,作了修改但还没有放到暂存区域,就是已修改状态.

基础操作

初始化Git仓库

git init

该命令将创建一个名为.git的子目录,这个子目录含有初始化的Git仓库中所有的必须文件

添加文件到暂存区

git add <file>    // 添加单个文件到暂存区

git add .   // '.' 表示所有文件、文件夹和子文件夹

添加文件到仓库

git commit      // 将暂存区的文件提交到仓库中

git commit -m '提交信息'      // -m 带提交信息,说明本次提交内容或修改等

git commit -am     // -a Git会自动把所有已经跟踪过的文件暂存一并提交,从而跳过git add步骤

查看文件状态

git status      // 查看哪些文件处于什么状态

git status -s       // git status -short 输出简介显示

??  filename-1      // 新添加未跟踪文件前面有??标记

A   filename-2      // 新添加到暂存区文件前有A标记

M   filename-3      // 出现在左边的M表示,该文件被修改了并放入了暂存区

 M  filename-4      // 出现在右边的M表示该文件被修改了但没放入暂存取

MM  filename-5      // 同时出现表示在工作区被修改并提交到暂存区由于在工作区中被修改了,所以说暂存区和工作区都有该文件的修改记录

查看文件具体修改

git diff        // 该命令查看未暂存的文件更新了哪些部分,用于比较工作目录中当前文件和暂存区域快照之间的差异

git diff  --cached      // 该命令用于查看已暂存的将要添加到下次提交里的内容 (Git 1.6.1 及更高版本还允许使用 git diff --staged,效果是相同的)

查看提交历史

git log     // 按提交时间列出所有的更新,最新的更新排在最上面

git log -p -(n)       // -p 用来显示每次提交的内容差异. -(n) 仅显示最近n次提交

git log --stat      // 每次的简略的统计信息

git log --pretty=oneline        // 该选项指定使用不同于默认格式的方式展示提交历史. 可用选项包括oneline,short,full,fuller和format(后跟指定格式)

git log --shortstat     // 只显示--stat中最后的行数修改添加移除统计

git log --name-only     // 仅在提交信息后显示已修改的文件清单

git log --name-status       // 显示新增、修改、删除的文件清单

git log --graph     // 显示ASCLL图形表示的分支合并历史

git relog       // 引用日志,记录了HEAD和分支引用所指向的历史,只存在在于本地仓库

撤销操作

git reset HEAD <file>       // 丢弃已经进入暂存取的修改

git checkout -- <file>      // 丢弃工作区中文件的修改

git checkout -- .       // 丢弃当前目录下所有工作区中的修改

退回到某个提交版本

git reset --hard HEAD^      // 回退到上一个提交

git reset --hard HEAD^^     // 回退到上上一个提交

git reset --hard <commit_id>        // 回退到指定id的提交版本

删除操作

在文件未添加到暂存取之前,可以直接物理删除想要删除的文件.或通过git checkout -- <file> 来丢弃修改.如果文件已经被提交,则需要git rm删除

git rm <file>      //  删除被提交的文件

远程仓库

查看远程仓库

git remote      // 查看已配置的远程仓库服务器

git remote -v       // 显示需要读写远程仓库使用的Git保存的简写与对应的URL

git remote show <remote-name>       // 查看某一个远程仓库的更多信息

添加远程仓库

git remote add <remote-name> <url>        // 添加地址为URL,名为remote-name的引用

从远程仓库中拉取与推送

git fetch <remote-name>     // 该命令将数据拉取到本地仓库,并不会自动合并或修改当前的工作

git pull <remote-name>      // 改命令自动抓取然后合并远程分支到当前分支

git push <remote-name> <branch-name>        // 将branch-name分支推送到remote-name服务器上

git push -u <remote-name> <branch-name>     // 第一次使用带上-u参数,在将本地的 master 分支推送到远程新的 master 分支的同时,还会把本地的 master 分支和远程的 master 分支关联起来

远程仓库的移除与重命名

git remote rm <remote-name>      // 移除远程仓库

git remote rename <old-name> <new-name>        // 重命名远程仓库

修改本地仓库对应的远程仓库

git remote set-url <remote-name> <url>        // 当远程的仓库地址发生变化时,需要修改本地仓库对应的远程仓库地址

分支管理

git branch      // 查看本地分支信息, 输出内容中,标记*,表示当前所在分支

git branch -v       // 查看详细的本地分支信息

git branch <branch-name>     // 新建一个branch-name分支

git checkout <branch-name>        // 新建完branch-name分支后,并通过该命令切到branch-name分支

git checkout master
git merge <branch-name>      // 切换回master分支,并将branch-name分支的修改合并到master分支

git branch -d <branch-name>       // 删除branch-name分支
------------- The End -------------
显示评论