引入
目前,我的博客虽然是在云服务器上进行部署,但我在本地进行调试。每次对项目进行修改后,都需要经历下面的工作流程:
- 执行下面的指令,重新生成博客的静态内容。
1 | hexo g |
- 如果需要将修改提交到github,则执行下面的指令。
1 | # 将所有未追踪的文件添加到Git的暂存区 |
- 将本地更新后的项目推送到服务器端以应用新版本。
1 | scp -r ./public/* 用户名@云服务器IP:/var/www/html |
这需要我与终端进行比较多次数的交互,在博客内容需要频繁更新的情况下非常影响效率。因此我决定编写一个脚本来集成上面的工作,使用比较少的交互次数,敲击更少次键盘来完成项目的更新。这有助于提高编码效率,降低我写博客的成本。
实现
编写的脚本如下:
1 |
|
效果
将上面的内容保存为deploy.sh文件,存放在博客的根目录下。
此后每次更新本地主机上项目的内容后,使用git bash执行上面的脚本,只需要最多两次交互即可实现项目的提交。
脚本会询问是否需要将项目提交到git远程仓库,如果输入”Y”则继续询问git commit的信息是什么,输入信息后自动实现提交到git远程库与服务器,否则直接将项目覆盖到云服务器。
这实现了我的预期,此后我只需要在更新项目时执行这个脚本即可。
背景知识补充
在这个过程中,一些背景知识我其实不够熟悉,在这里作补充。
Git的工作流程中的三个区域
Git的工作流程涉及到三个主要的区域:工作目录(Working Directory),暂存区(Staging Area/Index)和版本库(Local Repository)。另外,还有一个远端版本库(Remote Repository)的概念。
工作目录:这是我在电脑上看到的目录。它包含了所有正在工作的文件和目录。这些文件可能处于跟踪(已经被Git管理)或者未跟踪(尚未被Git管理)的状态。
暂存区:执行git add
命令时,改变的文件会被放入暂存区。这个区域是一个准备区域,它保存了下次将要提交的改变。可以多次执行git add
命令来添加多个文件到暂存区。
版本库:当执行git commit
命令,Git会将暂存区中的文件变化保存到版本库。版本库保存了项目的所有历史记录,每次提交都会创建一个新的版本,你可以随时回退到任何一个历史版本。
远端版本库:远端版本库是存储在网络上的你的项目的版本库,比如GitHub。你可以将本地版本库的改动推送到远端版本库(git push
),也可以从远端版本库拉取其他人的改动到本地(git pull
)。
这四个区域配合使用,使得Git具有强大的版本控制能力。让我们可以在本地进行开发和提交,然后再将改动推送到远端,这样就可以与团队其他成员共享改动了。
使用Git Bash运行Bash脚本
Bash脚本(也常称为shell脚本)允许你使用各种Unix命令和控制结构(如if语句,for循环等)来编写程序。你可以在Bash脚本中执行任意的Bash命令、调用其他的脚本或者程序、进行文件操作等。
本次实现的脚本就是一种Bash脚本,它使用的是Bash语言,在没有Git Bash的情况下,无法直接在windows环境下执行。而Git Bash提供了一个Unix-like的环境,包括一系列常见的Unix命令,如ls
、ssh
、scp
等,使得Windows用户可以使用类Unix的命令行体验。这满足了我们的需要,在windows系统下直接执行bash 脚本。