搭建个人博客(二):更改博客主题、上传源代码

#Hexo+GitHub 搭建个人博客(二):更改博客主题、上传源代码

HEXO+GitHub:pages

  • 本文简单介绍Hexo+GitHub 搭建博客。本文主要目的是对学习内容进行总结以及方便日后查阅。
  • 详细教程和原理可以参考Hexo官方中文文档
  • 本文版权归马涛涛所有。
  • 本文所引用的图片和文字版权归原作者所有,侵权删。
  • 如有错误请在下方评论区指出,欢迎积极讨论。

换博客主题

  1. https://github.com/hexojs/hexo/wiki/Themes 上面有主题合集
  2. 还可以在线预览效果,找一个喜欢的主题,进入主题的 GitHub 首页,比如https://github.com/hexojs/hexo/wiki/Themes
  3. 复制它的 SSH 地址或 HTTPS 地址,假设地址为 git@github.com:iissnan/hexo-theme-next.git
  4. cd themes
  5. git clone git@github.com:iissnan/hexo-theme-next.git
  6. cd ..
  7. start _config.yml进入_config.yml_config.yml 的第 75 行改为 theme: hexo-theme-next,保存
  8. hexo generate
  9. hexo deploy
  10. 等一分钟,然后刷新你的博客页面,你会看到一个新的外观。如果不喜欢这个主题,就回到第 1 步,重选一个主题。

    上传Hexo项目源代码到GitHub

注意「你的用户名.github.io」上保存的只是你的博客,并没有保存「生成博客的程序代码」,你需要再创建一个名为blog-generator 的空仓库,用来保存 myBlog 里面的「生成博客的程序代码」

  1. 在 GitHub 创建 blog-generator 空仓库,对GitHub不熟悉的可以参考博客前面的GitHub教程。

  2. 首先cd 命令进入 myBlog 目录,然后按照截图中的命令执行即可,记住,别用 HTTPS 地址,用SSH地址。

    这样一来,你的博客发布在了「你的用户名.github.io」这个链接,而你的「生成博客的程序代码」发布在了 [blog-generator]这个仓库。所有数据万无一失,你就不会因为误删 myBlog 目录而痛哭了。

  3. 以后每次 hexo deploy 部署完一篇新的博文后,博客就会更新;然后你还要要 add / commit /push 一下「生成博客的程序代码」,以防万一。如下图示例

    再强调一遍,这个 [blog-generator]仓库就是用来生成博客的程序,而「你的用户名.github.io」仓库就是你的博客页面。

搭建个人博客(一):安装、配置和第一篇博客

#Hexo+GitHub 搭建个人博客(一):安装、配置和第一篇博客

HEXO+GitHub:pages

  • 本文简单介绍Hexo+GitHub 搭建博客。本文主要目的是对学习内容进行总结以及方便日后查阅。
  • 详细教程和原理可以参考Hexo官方中文文档
  • 本文版权归马涛涛所有。
  • 本文所引用的图片和文字版权归原作者所有,侵权删。
  • 如有错误请在下方评论区指出,欢迎积极讨论。

安装与配置


什么是Hexo

Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。——《Hexo官方中文文档

安装前提

  • 安装Node.js
  • 安装Git

    Git可能需要科学地上网,没法下载的话,在Hexo文档——安装指南中有百度云Git同步下载地址。

    安装步骤

    1. 进入一个安全的目录,比如 cd ~/Desktop 或者 cd ~/Documents,别在根目录 / 。养成进入一个安全的目录,别在根目录里乱存东西的习惯,只有 ~ 里面的目录才是安全的。
    2. 在 GitHub 上新建一个空 repo,repo 名称是「你的用户名.github.io」(一定你的用户名替换成真正的用户名
    3. GitBash上运行npm install -g hexo-cli,安装 Hexo。
    4. hexo init myBlog
    5. cd myBlog
    6. npm i

      生成第一篇博客

    7. hexo new 开博大吉,开博大吉就是你的第一篇博客的标题,后面也可以改。运行完后你会看到一个 md 文件的路径。
      新的博客
  1. 首先用cd命令进入_posts的这个目录,再start 开博大吉.md,编辑这个 md 文件,内容自己写,先实验能否成功,后面再教如何编写以及美化博客(Ubuntu 系统用 xdg-open 开博大吉.md 命令)

    Windows 的路径中的 \ 需要变成 / 才行

  2. 进入然后返回myBlog目录,执行start _config.yml,编辑网站配置

    • 把第 6 行的 title 改成你想要的名字,这个就是网站的博客标题
    • 把第 9 行的 author 改成你的大名
    • 把最后一行的 type 改成 type: git
    • 在最后一行后面新增一行,左边与 type 平齐,加上一行 repo: 仓库地址 (请将仓库地址改为「你的用户名.github.io」对应的仓库地址,仓库地址以 git@github.com: 开头。
    • 上一步的 repo: 后面有个空格
  3. npm install hexo-deployer-git --save,安装 git 部署插件
  4. hexo deploy
  5. 进入「你的用户名.github.io」对应的 repo,打开 GitHub Pages 功能,如果已经打开了,就直接点击预览链接,链接是 [你的GitHub用户名.github.io]
  6. 你现在应该看到了你的博客!

增加新博客

  1. hexo new 第二篇博客标题
  2. 复制显示的路径,使用 start 路径 来编辑它,里面的内容支持MarkDown语法,编辑的内容就是博客的内容。
  3. hexo generate
  4. hexo deploy 部署,提交
    然后去看你的博客,应该能看到第二篇博客了

使用GitHub(三):使用VSCode+GitHub进行版本控制

使用GitHub(三):使用VSCode+GitHub进行版本控制

  • 本文简单介绍使用VSCode+GitHub进行项目或者代码的版本控制。本文主要目的是对学习内容进行总结以及方便日后查阅。
  • 详细教程和原理可以参考廖雪峰的Git教程猴子都能看懂的Git教程
  • 本文版权归马涛涛所有。
  • 本文所引用的图片和文字版权归原作者所有,侵权删。
  • 如有错误请在下方评论区指出,欢迎积极讨论。

使用原理


1 上节回顾

上一篇博客详细介绍了使用 git 的三种方式

  • 只在本地使用
  • 将本地仓库上传到 GitHub
  • 下载 GitHub 上的仓库

以及如何上传更新到GitHub,你在本地目录有任何变动,只需按照以下顺序就能上传:

1
2
3
4
git add 文件路径
git commit -m "信息"
git pull (一定不要忘记这一个命令)
git push

2 使用原理

本文所写的是使用VSCode中的GitHub功能,可以取代命令行中Git的四步更新的方式,简化上传步骤。

所以使用VSCode+GitHub进行项目或者代码的版本控制有以下两种方法:

  1. 在本地使用Git仓库→将仓库上传到GitHub→VScode打开→手动进行4步
  2. 在GitHub上新建仓库,下载仓库到本地→ VScode打开→手动进行4步

本文只记录从VScode打开之后的操作。

步骤

  1. 使用VSCode打开项目或代码的仓库
    打开仓库
  2. 点击侧边栏的 源代码管理按钮,或者快捷键Ctrl+Shift+G,这时并没有消息提示。

    源代码管理

  3. 这时我们新建一个style_test.css文件,旁边会出现U的符号,意思是更新尚未上传到GitHub

    更新

  4. 再次打开源代码管理,发现多了更新提示。
    此处输入图片的描述

  5. 这时就可以提交更新到GitHub了,作用同命令行中的git commit -m "new css file"
    此处输入图片的描述

  6. 最后一步是pull和push,分别等同于命令行中的git pullgit push
    pullpush

  7. 查看GitHub,更新成功
    GitHub同步更新

使用GitHub(二):配置并使用Git创建版本库

使用GitHub(二):配置并使用Git创建版本库

  • 本文简单介绍使用GitHub对代码进行版本控制,包括添加SSHkey配置Git使用Git创建版本库并在GitHub上进行管理,主要目的是对学习内容进行总结以及方便日后查阅。
  • 详细教程和原理可以参考廖雪峰的Git教程猴子都能看懂的Git教程
  • 本文版权归马涛涛所有。
  • 本文所引用的图片和文字版权归原作者所有,侵权删。
  • 如有错误请在下方评论区指出,欢迎积极讨论。

配置Git


1
2
3
4
5
git config --global user.name 你的英文名
git config --global user.email 你的邮箱
git config --global push.default matching
git config --global core.quotepath false
git config --global core.editor "vim"

五句话,依次运行。

使用Git创建版本库


使用 git 有三种方式,请按照需求选择。

  1. 只在本地使用
  2. 将本地仓库上传到 GitHub
  3. 下载 GitHub 上的仓库

其中1+2的最终效果=3

1只在本地使用


1.1 初始化

  1. 创建目录作为我们的项目目录:mkdir git-demo-1

  2. 进入目录 cd git-demo-1

  3. git init,这句命令会在 git-demo-1 里创建一个 .git 目录

  4. ls -la 你就会看到 .git目录,它就是一个「仓库」,不要进去看。

  5. git-demo-1目录里面添加任意文件,假设我们添加了两个文件,分别是 index.htmlcss/style.css

    1
    2
    3
    touch index.html
    mkdir css
    touch css/style.css
  6. 运行 git status -sb 可以看到文件前面有 ??

    1
    2
    3
    touch index.html
    mkdir css
    touch css/style.css

    这个 ?? 表示 git不知道你要怎么对待这些变动。

  7. 使用 git add 将文件添加到「暂存区」

  1. 你可以一个一个地 add
    1
    2
    git add index.html
    git add css/style.css
  1. 你也可以一次性 add

    1
    git add .

    意思是把当前目录(.表示当前目录)里面的变动都加到「暂存区」

  2. 再次运行 git status -sb,可以看到 ?? 变成了 A

1
2
3
## Initial commit on master
A css/style.css
A index.html

A 的意思就是添加,也就是说你告诉 git,这些文件我要加到仓库里

  1. 使用 git commit -m "信息" 将你 add过的内容「正式提交」到本地仓库(.git就是本地仓库),并添加一些注释信息,方便日后查阅

  2. 你可以一个一个地 commit

    1
    2
    git add index.html
    git add css/style.css
  1. 你也可以一次性 commit

    1
    git commit . -m "添加了几个文件"
    1. 再再次运行 git status -sb,发现没有文件变动了,这是因为文件的变动已经记录在仓库里了。
    2. 这时你使用 git log 就可以看到历史上的变动:

      1
      2
      3
      4
      5
      commit f0d95058cd32a332b98967f6c0a701c64a00810a
      Author: frankfang <frankfang1990@gmail.com>
      Date: Thu Sep 28 22:30:43 2017 +0800

      添加几个文件
    3. 以上就是 git add / git commit 的一次完整过程。

1.2 文件变动

如果我想继续改文件,应该怎么做呢?

  1. start css/style.css 会使用默认的编辑器打开 css/style.css(macOS 上对应的命令是 open css/style.css

  2. 然后我们在 css/style.css 里写入 body {background: red},保存退出

  3. 运行 git status -sb 发现提示中有一个 M

    1
    2
    ## master
    M css/style.css

    这个 M 的意思就是 Modified,表示这个文件被修改了

  4. 此时你如果想让改动保存到仓库里,你需要先 git add css/style.css 或者也可以 git add .

    注意:由于这个 css/style.css 以前被我们 add 过,你往文章上面看,我们是 add 过 css/style.css的,所以此处的 git add操作可以省略,但我建议你使用 git 的前一个月,不要省略 git add。

    换句话说,每一次改动,都要经过 git addgit commit 两个命令,才能被添加到 .git 本地仓库里。

  5. 再次运行 git status -sb 发现 M 有红色变成了绿色。

  6. 运行 git commit -m` “更新 css/style.css”,这个改动就被提交到 .git 本地仓库了。再说一次,不要去 .git 目录里面。
  7. 再再次运行 git status -sb,会发现没有变更了,这说明所有变动都被本地仓库记录在案了。

git status -sb 是什么意思:
git status 是用来显示当前的文件状态的,哪个文件变动了,方便你进行 git add 操作。

  • -s 的意思是显示总结(summary)
  • -b 的意思是显示分支(branch)
  • 所以 -sb 的意思是显示总结和分支。

1.3 总结

至此,我们来总结一下用到的命令

  1. git init,初始化本地仓库 .git
  2. git status -sb,显示当前所有文件的状态
  3. git add 文件路径,用来将变动加到暂存区
  4. git commit -m "信息",用来正式提交变动,提交至 .git 仓库
  5. 如果有新的变动,我们只需要依次执行 git add xxxgit commit -m 'xxx' 两个命令即可。

    别看本教程废话那么多,其实就这一句有用!先 add 再 commit,行了,你学会 git 了。

  6. git log 查看变更历史

2 将本地仓库上传到 GitHub


如何将我们这个 git-demo-1 上传到 GitHub 呢?

  1. 在 GitHub 上新建一个空仓库,名称随意,一般可以跟本地目录名一致,也叫做 git-demo-1
    建立空仓库

    按照截图所示,除了仓库名,其他的什么都别改,这样你才能创建一个空仓库

  2. 点击创建按钮之后,GitHub 就会把后续的操作全告诉你,如图
    请点击一下 ssh

    点击SSH
    点击SSH2

  3. 点击一下 ssh,你就会使用默认的 HTTPS 地址。但是千万不要使用 HTTPS 地址,因为 HTTPS地址使用起来特别麻烦,每次都要输入密码,而 SSH 不用输入用户名密码。

    为什么 SSH 不用密码呢,因为你已经上传了 SSH public key。详情请看上一篇博文使用GitHub(一)

  4. 由于我们已经有本地仓库了,所以图中下面半部分就是你需要的命令,我们一行一行拷贝过来执行

    • 再次点击 SSH 按钮
    • 命令 git remote add origin git@github.com:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/git-demo-1.git,复制并运行它
    • 复制第二行 git push -u origin master,运行它
    • 刷新当前页面,你的仓库就上传到 GitHub 了.

在建立空库的情况下,以上两步在本地建一个Git仓库和将Git仓库上传到GitHub上加起来就等同于下面的第3条。

3 直接在 GitHub 创建一个仓库,然后下载到本地


上面两步讲了

  • 在本地创建仓库
  • 将本地仓库上传到 GitHub

这里讲第三种用法,那就是直接在 GitHub 创建一个仓库,然后下载到本地

  1. 在GitHub 上新建一个仓库git-demo-2,这次就不创建空仓库了,而是自带 READMELisence 的仓库,创建截图如下:
    创建新的仓库
    然后点击创建按钮。
  2. 这样一来,这个仓库就会自动拥有三个文件:
    仓库文件

  3. 使用 git clone 命令下载到本地

  4. 点击页面中唯一的绿色按钮「clone or download」,会看到一个弹出层
    clone

    请确保弹出层里的地址是 SSH 地址,也就是 git@github.com 开头的地址,如果不是,就点击 Use SSH 按钮,就点击
    Use SSH 按钮
    。然后复制这个地址。

  5. 打开 Git Bash,找一个安全的目录,比如 ~/Desktop
    运行 git clone 你刚才得到的以git@github.com开头的地址,运行完了你就会发现,桌面上多出一个 git-demo-2

  6. cd git-demo-2进入这个目录。
  7. 运行 ls -la 你会看到,远程目录的所有文件都在这里出现了,另外你还看到了 .git 本地仓库。这时你就可以添加文件,git add,然后 git commit 了。

三种方式都说完了,它们分别是:

  • 在本地创建仓库
  • 将本地仓库上传到 GitHub
  • 下载 GitHub 上的仓库到本地

其实呢,还有很多种不同的方式,但是,记住这几种就行了,够用了。我们并不想要了解 git 的所有高级用法,我们的目的很明确:能通过 Git
命令使用 GitHub 就行

总结:

回顾一遍已经学到的命令:(这次只多了一个 git clone 命令)

  • git clone git@github.com:xxxx,下载仓库
  • git init,初始化本地仓库 .git
  • git status -sb,显示当前所有文件的状态
  • git add 文件路径,用来将变动加到暂存区
  • git commit -m "信息",用来正式提交变动,提交至 .git 仓库
  • 如果有新的变动,我们只需要依次执行 git add xxxgit commit -m 'xxx' 两个命令即可。

    别看本教程废话那么多,其实就这一句有用!先 add 再 commit,行了,学会 git 了。

  • git log 查看变更历史

如何上传更新

你在本地目录有任何变动,只需按照以下顺序就能上传:

1
2
3
4
git add 文件路径
git commit -m "信息"
git pull (一定不要忘记这一个命令)
git push

为何要push之前要pull?
push是推送pull是拉取的意思。假如你在远端修改了文件,然后本地并没有同步更新,这时候你push的时候就会出现错误,因为两端不同步了。多人合作的时候这种问题就会出现的更多,所以现在养成push之前要pull的习惯。

下面是例子

1
2
3
4
5
6
cd git-demo-1
touch index2.html
git add index2.html
git commit -m "新建 index2.html"
git pull
git push

然后去 git-demo-1 的 GitHub 页面,就能看到 index2.html 出现在里面了。

使用GitHub(一):添加SSHkey

使用GitHub(一):添加SSHkey

  • 本文简单介绍使用GitHub对代码进行版本控制,包括添加SSHkey配置Git使用Git创建版本库并在GitHub上进行管理,主要目的是对学习内容进行总结以及方便日后查阅。
  • 详细教程和原理可以参考廖雪峰的Git教程猴子都能看懂的Git教程
  • 本文版权归马涛涛所有。
  • 本文所引用的图片和文字版权归原作者所有,侵权删。
  • 如有错误请在下方评论区指出,欢迎积极讨论。

添加SSHkey

  • 简单说,SSH是一种网络协议,用于计算机之间的加密登录
  • 如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。
  • 最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者TatuYlonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。
  • 在这里你只需要知道使用GitHub之前需要添加SSHkey,用来验证GitHub远程仓库就可以了,如果想深入了解原理,参考阮一峰SSH原理

步骤:

  1. 进入 https://github.com/settings/keys
  2. 如果页面里已经有一些 key,就点「delete」按钮把这些 key 全删掉。如果没有,就往下看
    参考示例
  3. 点击 New SSH key,你需要输入 Title 和 Key,但是你现在没有 key,往下看

    添加步骤参考这里

  4. 打开 Git Bash
  5. 复制并运行 rm -rf ~/.ssh/* 把现有的 ssh key都删掉,这句命令行如果你多打一个空格,可能就要重装系统了,建议复制运行。
  6. 运行 ssh-keygen -t rsa -b 4096 -C "你的邮箱",注意填写你的真实邮箱。
  7. 按回车三次
    参考示例:参考示例
    这时会在~目录下生成一个.ssh的隐藏文件 参考示例2
  8. 运行 cat ~/.ssh/id_rsa.pub,得到一串东西,完整的复制这串东西
  9. 回到上面第 3 步的页面,在 Title 输入「我的第一个 key」
  10. 在 Key 里粘贴刚刚你你复制的那串东西
    复制key
  11. 点击 Add SSH key
  12. 回到 Git Bash
  13. 运行 ssh -T git@github.com,你可能会看到这样的提示:
    提示

  14. 输入 yes 回车

  15. 然后如果你看到 Permission denied (publickey). 就说明你失败了,请回到第 1 步重来,是的,回到第 1步重来;如果你看到 Hi FrankFang! You've successfully authenticated, but GitHub does not provide shell access.

成功示例

就说明你成功了!

  1. 好了, 添加了一SSH key,接下来就会用到它。
  • 一台电脑只需要一个 SSH key
  • 一个 SSH key 可以访问你的所有仓库,即使你有 1000000 个仓库,都没问题
  • 如果你新买了电脑,就在新电脑上重新生成一个 SSH key,把这个 key 也上传到 GitHub,它可以和之前的 key 共存在 GitHub 上
  • 如果你把 key 从电脑上删除了,重新生成一个 key 即可,替换之前的 key

Git入门教程

Git简介

Git是目前世界上最先进的分布式版本控制系统。Git自动记录每次文件的改动,还可以协作编辑,无需手动管理,自动版本控制。


##集中式VS分布式

集中式版本控制系统

集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器
中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。
集中式版本控制系统最大的缺点就是必须联网才能工作。

分布式版本控制系统

  • 每个人都是一个完整的库:首先,分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

  • 安全性高:和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。

  • 用一台电脑充当中央服务器:在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。

  • Gt极其强大的分支管理

    安装Git

    在Windows上安装Git

    安装GitBash,Git Bash 内置了 Git 命令。

    配置

    第一个要配置的是你个人的用户名称和电子邮件地址。这两条配置很重要,每次 Git 提交时都会引用这两条信息,说明是谁提交了更新,所以会随更新内容一起被永久纳入历史记录
1
2
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

如果用了--global 选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息。如果要在某个特定的项目中使用其他名字或者电邮,只要去掉--global选项重新配置即可,新的设定保存在当前项目的 .git/config文件里。

使用Git创建一个版本库

创建方法

版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”

所以,创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录:

1
2
3
4
$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit

pwd命令用于显示当前目录。在我的Mac上,这个仓库位于/Users/michael/learngit

如果你使用Windows系统,为了避免遇到各种莫名其妙的问题,请确保目录名(包括父目录)不包含中文

第二步,通过git init命令把这个目录变成Git可以管理的仓库:

1
2
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/

瞬间Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository),细心的读者可以发现当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。

如果你没有看到.gitt目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见。

也不一定必须在空目录下创建Git仓库,选择一个已经有东西的目录也是可以的。不过,不建议你使用自己正在开发的公司项目来学习Git,否则造成的一切后果概不负责。

把文件添加到版本库

首先这里再明确一下,所有的版本控制系统,其实只能跟踪文本文件的改动,比如TXT文件,网页HTML,所有的程序代码等等,Git也不例外。版本控制系统可以告诉你每次的改动,比如在第5行加了一个单词“Linux”,在第8行删了一个单词“Windows”。而图片、视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是只知道图片从100KB改成了120KB,但到底改了啥,版本控制系统不知道,也没法知道。

不幸的是,Microsoft的Word格式是二进制格式,因此,版本控制系统是没法跟踪Word文件的改动的,前面我们举的例子只是为了演示,如果要真正使用版本控制系统,就要以纯文本方式编写文件。

因为文本是有编码的,比如中文有常用的GBK编码,日文有Shift_JIS编码,如果没有历史遗留问题,强烈建议使用标准的UTF-8编码,所有语言使用同一种编码,既没有冲突,又被所有平台所支持。

使用Windows的童鞋要特别注意:

千万不要使用Windows自带的记事本编辑任何文本文件。原因是Microsoft开发记事本的团队使用了一个非常弱智的行为来保存UTF-8编码的文件,他们自作聪明地在每个文件开头添加了0xefbbbf(十六进制)的字符,你会遇到很多不可思议的问题,比如,网页第一行可能会显示一个“?”,明明正确的程序一编译就报语法错误,等等,都是由记事本的弱智行为带来的。建议你下载Notepad++代替记事本,不但功能强大,而且免费!记得把Notepad++的默认编码设置为UTF-8 without BOM即可:

set-utf8-notepad++

言归正传,现在我们编写一个readme.txt文件,内容如下:

1
2
Git is a version control system.
Git is free software.

一定要放到learngit目录下(子目录也行),因为这是一个Git仓库,放到其他地方Git再厉害也找不到这个文件。

把一个文件放到Git仓库只需要两步。

  • 把文件添加到仓库
    第一步,用命令git add告诉Git,把文件添加到仓库:
1
$ git add readme.txt

执行上面的命令,没有任何显示,这就对了,Unix的哲学是“没有消息就是好消息”,说明添加成功。

  • 把文件提交到仓库
    第二步,用命令git commit告诉Git,把文件提交到仓库:
1
2
3
4
$ git commit -m "wrote a readme file"
[master (root-commit) cb926e7] wrote a readme file
1 file changed, 2 insertions(+)
create mode 100644 readme.txt

简单解释一下git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。

嫌麻烦不想输入-m "xxx"行不行?确实有办法可以这么干,但是强烈不建议你这么干,因为输入说明对自己对别人阅读都很重要。实在不想输入说明的童鞋请自行Google,我不告诉你这个参数。

git commit命令执行成功后会告诉你,1个文件被改动(我们新添加的readme.txt文件),插入了两行内容(readme.txt有两行内容)。

为什么Git添加文件需要addcommit一共两步呢?因为commit可以一次提交很多文件,所以你可以多次add不同的文件,比如:

1
2
3
$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."

####小结
Git仓库三个基本命令

  1. 初始化一个Git仓库,使用git init命令。

  2. 添加文件到Git仓库,分两步:

Git Bash命令行基础

#命令行基础

##一、常见命令

操作 命令
进入目录 cd
显示当前目录 pwd
创建目录 mkdir 目录名
创建目录 mkdir -p 目录路径
我是谁 whoami
查看路径 ls 路径
查看路径 ls -a 路径(显示隐藏文件)
查看路径 ls -l 路径(显示更多信息(drwx:d是否是目录,rw是否可以读写,x是否可以执行))
查看路径 ls -al 路径 (显示隐藏信息和详细信息)
创建文件 echo ‘1’ > 文件路径 (并且把内容“1”写入文件)
强制创建文件 echo ‘1’ >! 文件路径(只能用在linux,windows出错)强制重定向,覆盖原来有的内容
追加文件内容 echo ‘1’ >> 文件路径(只能用在linux,windows出错)
创建文件 touch 文件名
改变文件更新时间 touch 文件名
复制文件 cp 源路径 目标路径(可以覆盖原来有的文件)
复制目录 cp -r 源路径 目标路径
移动节点 mv 源路径 目标路径(修改文件名)
删除文件 rm 文件路径
强制删除文件 rm -f 文件路径
删除目录 rm -r 目录路径
强制删除目录 rm -rf 目录路径
查看目录结构 tree(windows不支持)
建立软链接 ln -s 真实文件 链接
下载文件 curl -L https://www.baidu.com > baidu.html
拷贝网页 wget -p -H -e robots=off https://www.baidu.com (整个网页所有文件)
磁盘占用 df -kh
当前目录大小 du -sh .
各文件大小 du -h
查看文件内容 cat

####需要注意的点

  1. 各种符号代表的含义
    • ~:用户目录:我的电脑上就是/c/Users/ASUS
    • /:根目录,一个/就是根目录,不管你有多少个硬盘,他会把所有硬盘联合起来当作一块
    • . :一个点表示当前目录,
    • ../:两个点表示父目录
    • $:意思是可以输入命令,没有实际意义
    • TAB键可以补全文件名或者目录
  2. 绝对路径与相对路径
    如果一个路径是用“\”开始的,Windows 就从根目录开始找起(绝对路径),否则就从当前目录开始找(相对路径)。

二、命令行技巧

###1. ~/.bashrc文件功能的强大

####(1) 打开Git Bash自动运行

  1. 首先 touch ~/.bashrc 创建一下这个文件
  2. start ~/.bashrc 选用编辑器编辑这个文件,内容为 echo 'Hi'
  3. 你也可以用命令行编辑文件 echo "echo 'hi'" >> ~/.bashrc
  4. 关闭退出 Git Bash,然后打开 Git Bash,是不是看到了 Hi,这说明每次进入 Git Bash,就会优先运行~/.bashrc 里面的命令
    1. 重新编辑 ~/.bashrc,内容改为 cd ~/Desktop,重启 Git Bash,有没有发现默认就进入桌面目录了?
  5. 你可以用 ~/.bashrc 在进入 Git Bash 前执行任何命令,十分方便。
    ####(2) alias命令行缩写
    1. 在 ~/.bashrc 里新增一行 alias f="echo 'frank is awesome'",等于号两边不能有空格,你最好一个字都不要错。
    2. 运行 source ~/.bashrc,作用是执行 ~/.bashrc
    3. 运行 f,就会看到 frank is awesome
    4. 也就是说,现在 f 就是 echo 'frank is awesome' 的缩写了,利用这个技巧,我们可以把很多常见的命令缩写一下,比如
      1
      2
      3
      4
      5
      6
      7
      alias la='ls -a'
      alias ll='ls -l'
      alias gst='git status -sb'
      alias ga='git add'
      alias ga.='git add .'
      alias gc='git commit'
      alias gc.='git commit .'
  1. 保存退出,然后运行 source ~/.bashrc
    这样一来,你的 Git 操作就会简单很多:
    1
    2
    3
    4
    5
    ga 1.txt
    ga .
    gc 1.txt
    gc.
    gst

三、explainshell.com的使用

explainshell.com这个网站可以解释命令行的含义,只要输入对应的命令刚命令,按回车,就可以在下方得到命令行作用的详细解释。
explainshell.com截图