前言
在日常的软件开发工作中,我们经常需要使用版本控制系统来管理代码。GitHub 是一个非常流行的代码托管平台,而 Git 是最常用的版本控制工具之一。然而,使用 Git 进行一些常见的操作可能需要多条命令,例如添加、提交和推送代码等。在本篇博客中,我们将介绍如何使用 simple-git 库来简化这些操作,实现只需一行命令即可完成提交代码到 GitHub。
工具介绍
simple-git
simple-git
是一个轻量级的Node.js库,提供了一系列简化的API,用于操作Git命令。通过simple-git,我们可以在JavaScript代码中执行Git命令,而不需要手动在终端中输入。
你可以使用以下命令来安装simple-git:
pnpm i -D simple-git
process.cwd
获取当前工作目录的根路径。
简单使用
const simpleGit = require('simple-git')
const git = simpleGit()
// 初始化仓库
git.init().then(() => {
console.log('Git repository initialized!')
})
// 添加所有文件
git.add('./*').then(() => {
console.log('Files added!')
})
// 第一次提交
git.commit('Initial commit').then(() => {
console.log('Committed!')
})
// 推送到 origin/master
git.push('origin', 'master').then(() => {
console.log('Pushed to origin/master!')
})
案例实战
目标
接下来,我们将以一个案例实战来展示如何使用 simple-git 实现一行命令提交代码到 GitHub。我们的目标是通过一行命令检测工作目录中的更改或新增的文件,并将其添加、提交并推送到远程仓库。
主要有以下两个步骤:
simple-git
写好运行脚本- package.json 配置运行命令
手搓脚本
script/handleGit.js
const simpleGit = require('simple-git');
const getCurrentDay = require('./getCurrentDay');
// 配置 simple-git 选项
const options = {
baseDir: process.cwd(), // 设置 git 的工作目录
binary: 'git', // 如果 git 可执行文件不在系统路径中,则需要设置此项
maxConcurrentProcesses: 6, // 在此处设置为您的 CPU 内核数
trimmed: false, // 如果为 true,则删除前导和尾随空格
};
const git = simpleGit(options);
// 处理 Git 操作
function handleGit() {
// 1. 检查是否安装 Git
git.status(null, (err, status) => {
const repo_status = status;
if (repo_status.not_added.length > 0) {
addAll();
}
if (repo_status.modified.length > 0) {
commit(`${getCurrentDay} 更新了${repo_status.modified.length}个文件`);
}
if (repo_status.ahead > 0) {
push();
}
});
}
// 添加所有文件到暂存区
function addAll() {
git.add('./*', (err, result) => {
console.log('addAll');
});
}
// 提交更改
function commit(msg) {
git.commit(msg, (err, result) => {
console.log('commit');
});
}
// 推送到远程仓库
function push() {
git.push('origin', 'master', (err, result) => {
console.log('push');
});
}
// 执行 Git 操作
handleGit();
script/getCurrentDay.js
function getCurrentDay() {
// 格式 2023年6月23日
let date = new Date();
let year = date.getFullYear();
let month = date.getMonth() + 1;
let day = date.getDate()
day = `${year}年${month}月${day}日`
return day;
}
module.exports = getCurrentDay();
配置运行命令
在package.json
文件里配置脚本运行命令
然后运行脚本
好啦!我们完成一个简单的nodejs脚本啦,这样就不用每天add,commmit,再push了
小结
通过使用 simple-git 库,我们可以简化 Git 操作,并实现一行命令提交代码到 GitHub。本文介绍了 simple-git 的安装和基本用法,并通过案例实战演示了如何使用 simple-git 实现一行命令检测工作目录的更改或新增的文件,并将其提交并推送到 GitHub。希望这篇博客能帮助你简化代码提交的过程,提高开发效率!