Пусть небольшой скрипт поможет вам сделать эти скучные коммиты git

Git JavaScript Shell
Пусть небольшой скрипт поможет вам сделать эти скучные коммиты git

сказка на ночь

На совещании руководитель группы сказал, что каждый раз, когда выполняется небольшое требование и изменяется ошибка, необходимо отправить коммит, а локальную ветку следует отправить на удаленный склад, прежде чем уйти с работы. Те, кто не совершает, те, кто не нажимают, будут вычитать результаты текущего месяца... Хотя я чувствую, что это очень раздражает, но кто делает из себя подработку, и я ничего не смею сказать, я могу только это сделать, что еще я могу сделать. После этого держу git status, git add.Может мне лень), git, git, git, код еще не написан. Затем я подумал, могу ли я ввести команду для автоматического выполнения этих шагов, и тогда родился этот небольшой скрипт.

Реализация скрипта

скрипт написан в оболочке

Определить, установлен ли git

if(!shell.which('git')) {
  shell.echo('你还没安装git,请先安装git')
  shell.exit(1)
}

Определить, есть ли изменения в файле

if(shell.exec('git status').stdout.indexOf('working tree clean') !== -1) {
  shell.echo('没有变动文件')
  shell.exit(1)
}

Посмотрите, какие файлы были изменены

if(shell.exec('git status').code !== 0) {
  shell.echo('git status执行出错')
  shell.exit(1)
}

Добавить отслеживание файлов

if(shell.exec('git add .').code !== 0) {
  shell.echo('git add执行出错')
  shell.exit(1)
}

Отправить в локальный репозиторий

let intro = process.argv[2]

if(!intro) {
  shell.echo('请填写提交信息,格式为feat(xxxx):xxxxx')
  shell.exit(1)
}
if(shell.exec(`git commit -m ${intro}`).code !== 0) {
  shell.echo('git  commit执行出错')
  shell.exit(1)
}

отправить удаленный репозиторий

let BranchName = shell.exec('git rev-parse --abbrev-ref HEAD')
// 因为我7点下班,七点后commit的都会推送到远程
if(new Date().getHours() >= 19) {
  if(shell.exec(`git push origin ${BranchName}`).code !== 0) {
    shell.echo('推送远程失败')
    shell.exit(1)
  }
  shell.echo('推送远程完成')
}

полный код

let shell = require('shelljs')

if(!shell.which('git')) {
  shell.echo('你还没安装git,请先安装git')
  shell.exit(1)
}

shell.echo('查看哪些文件变动')

if(shell.exec('git status').stdout.indexOf('working tree clean') !== -1) {
  shell.echo('没有变动文件')
  shell.exit(1)
}

if(shell.exec('git status').code !== 0) {
  shell.echo('git status执行出错')
  shell.exit(1)
}

shell.echo('开始添加新文件追踪')

if(shell.exec('git add .').code !== 0) {
  shell.echo('git add执行出错')
  shell.exit(1)
}

let intro = process.argv[2]

if(!intro) {
  shell.echo('请填写提交信息,格式为feat(xxxx):xxxxx')
  shell.exit(1)
}

if(shell.exec(`git commit -m ${intro}`).code !== 0) {
  shell.echo('git  commit执行出错')
  shell.exit(1)
}

let BranchName = shell.exec('git rev-parse --abbrev-ref HEAD')

shell.echo(`代码提交到本地完成,当前分支是${BranchName}`)

if(new Date().getHours() >= 19) {
  if(shell.exec(`git push origin ${BranchName}`).code !== 0) {
    shell.echo('推送远程失败')
    shell.exit(1)
  }
  shell.echo('推送远程完成')
}

использовать

 node git-commit.js(写上你脚本的文件) 'feat(xxx):xxxxx'(你要commit的描述)

Эффект

без изменений

image.png

изменения

image.png

Суммировать

Программисты ленивы.