快速提交 git 仓库内容

思考

随着我刷LeetCode题目的增多,我会记录下刷题过程、时间复杂度和内存消耗,并将LeetCode的截图裁切后上传到图床。

然而,有时我只记得上传博客内容,却忘记了上传截图。为了快速且清晰地提交到Git仓库,我需要一种更高效的方法来管理这些提交。

此文章内容仅使用了免费的Github + JsDelivr图床方案,没有使用阿里云的OSS收费的方法。

实现快速提交功能

需求分析

实现快速提交功能,使提交信息包含当前的时间(精确到分钟),并符合提交规范的内容要求。

实现步骤

写入Bash脚本

将脚本内容保存到一个文件当中,如quick_commit.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/bash

# 获取当前时间,格式为 YYYY-MM-DD HH:MM
current_time=$(date +"%Y-%m-%d %H:%M")

# 设置提交信息
commit_message="add(blog): ${current_time}"

# 添加所有更改到暂存区
git add .

# 提交更改并使用格式化的提交信息
git commit -m "${commit_message}"

# 推送更改到远程仓库
git push

使用方法

  1. git bash 中给脚本添加执行权限

    1
    chmod +x quick_commit.sh
  2. 在需要提交的 Git 仓库中运行这个脚本来快速提交

    1
    ./quick_commit.sh

执行完脚本后就可以看到GitHub仓库中已经成功上传内容,并且commit提交的内容为获取的时间。

提交内容展示

result

ISSUE

在此过程中难免会遇到问题,那也是一个成长的过程嘛!

文件格式问题

当我成功使用git bash 提交上去之后,我下意识的使用zsh去提交我的提交我的代码及图片内容。但是遇到了文件格式的问题。

zsh: ./quick_commit.sh: bad interpreter: /bin/bash^M: no such file or directory

  • 在Unix/Linux系统中,行结束符是LF(\n
  • 在Windows系统中,行结束符是CRLF(\r\n

当你在Windows系统上编辑脚本并在Unix/Linux系统上运行时,脚本文件可能包含Windows格式的行结束符,从而导致“bad interpreter”错误。

解决方法

在VSCode中:
  1. 打开 quick_commit.sh 文件。
  2. 右下角可以看到 CRLFLF
  3. 点击 CRLF,然后选择 LF
在Sublime Text中:
  1. 打开 quick_commit.sh 文件。
  2. 点击菜单栏的 View -> Line Endings
  3. 选择 Unix.
在Notepad++中(Windows):
  1. 打开 quick_commit.sh 文件。
  2. 点击菜单栏的 Edit -> EOL Conversion
  3. 选择 Unix (LF)

转换完后,保存文件并再次尝试运行脚本。