cggit 简化 Git 提交、合并、分支偏移小神器,提升开发、修BUG效率!

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: cggit 简化 Git 提交、合并、分支偏移小神器,提升开发、修BUG效率!

一、简介

  • 在开发过程中,习惯用 Git 命令 提交、合并代码的小伙伴会发现,经常在重复的敲提交代码就算了,尤其是测试环节,修好之后,来回切换提交、合并操作,所以这也是很多小伙伴选择用可视化操作的原因。
  • 博主就是一个喜欢用 Git 命令 的人,不太喜欢可视化的软件。所以使用 NodeGit 相关命令进行包装,做了一个自动化命令工具 cggit。附 GitHub 地址
  • 在自动化命令的基础上,还额外支持所有不带参的 git 原生命令,下面使用中有说明什么叫不带参命令。
  • 在执行 cggit 自动化命令过程中遇到冲突,解决后,可继续执行一遍相关命令 push, merge 完成提交。


二、安装

  • 请务必安装好 GitNode 环境。
    Windows 包管理工具:winget
    Mac 包管理工具:homebrew
    Linux 包管理工具:Yum
    各平台都可以通过包管理工具快速安装 GitNode
  • cggit 安装到全局,使用命令 $ ggit xxx
$ npm i -g cggi
$ ggit -v
  • 如果安装失败,可将镜像切换到官方镜像尝试
# 查看镜像
$ npm get registry
# 切换为官方镜像
$ npm config set registry https://registry.npmjs.org
# 切换为淘宝镜像
$ npm config set registry https://registry.npm.taobao.org
  • 可通过 ggit -h 查看帮助文档,查看支持子命令与参数
$ ggit -h
# 输出
Usage: ggit [options] [command]
# ggit 支持的参数
Options:
  -V, --version     output the version number
  -v                output the version number
  -d [branch]       移除指定本地分支
  -dr [branch]      移除指定远程分支
  -b [branch]       以当前分支为基础,新建分支
  -g, --go [branch] 切换到指定分支,如本地没有会拉取远程分支
  -h, --help        display help for command
# ggit 支持的子命令
Commands:
  pull             同步当前分支的远程数据,如果未建立远程分支跟踪,会自动跟踪远程分支,并拉取最新数据
  push [options]   提交当前分支到远程仓库,并可在提交完成后,自动切换到指定分支
  merge [options]  提交当前分支到远程仓库,并合并到指定分支,再返回当前分支/指定分支
  fix [options]    目前主要作用于修复分支偏移问题
  help [command]   display help for command
  • 可通过 ggit push|merge|fix -h 查看帮助文档,查看子命令支持参数
$ ggit push -h
Usage: ggit push [options]
提交当前分支到远程仓库
# push 支持的参数
Options:
  -g, --go [branch]    合并提交结束后,切换到指定分支
  -s, --stash [type]   使用 stash 暂存区方式合并代码,如手动终止脚本、执行失败停止脚本,需检查是否执行了 $ git stash pop 命令,没有执行需要手动执行放出暂存区的代码,以免丢失 (default: true)
  -m, --message [msg]  提交日志信息 (default: "2023-06-09 11:32:11 提交优化")
  -h, --help           display help for command

三、使用

  • ggit 支持的属性
# 切换到指定分支
$ ggit -g 2.3.4
# 移除远程分支
$ ggit -dr 2.3.4
....
ggit 含义 支持传参 默认值
-v | -V 查看版本
-g, --go [branch] 切换到指定分支,如本地没有会拉取远程分支
-b [branch] 以当前分支为基础,新建分支
-d [branch] 移除指定本地分支
-dr [branch] 移除指定远程分支

  • ggit 目前支持的子命令
# 1、拉取当前分支远程代码,会自动建立远程分支跟踪
$ ggit pull
# 2、提交当前分支代码
$ ggit push
# 3、合并代码,提交当前分支代码,并合并到默认分支 dev,在切回当前分支继续开发
$ ggit merge === $ ggit merge -t dev
# 4、修复分支偏移,一般情况不需要,看到报错分支偏移时可以使用
$ ggit fix
# 5、修改默认配置
# 比如 merge 默认合并的是 dev 分支,如果想默认是的 master,则可以通过 cset 修改,这样就不需要在 $ ggit merge 时不需要指定 -t master,其他配置同理。
$ ggit config set -t master
# 6、获取所有默认配置
$ ggit config === $ ggit config get
# 获取指定配置
$ ggit config -t === $ ggit config get -t
  • 子命令参数介绍
pull 含义 支持传参 默认值

push 含义 支持传参 默认值
-g, --go [branch] 合并提交结束后,切换到指定分支 分支名称 -
-s, --stash [type] 使用 stash 暂存区方式合并代码,如手动终止脚本、执行失败停止脚本,需检查是否执行了 $ git stash pop 命令,没有执行需要手动执行放出暂存区的代码,以免丢失 0/1/true/false/Ture/False true
-m, --message [msg] 提交日志信息 - 当前时间 + 提交优化

merge 含义 支持传参 默认值
-t, --to [branch] 合并到指定的分支 分支名称 dev
-g, --go [branch] 合并提交结束后,切换到指定分支 分支名称 当前分支
-s, --stash [type] 使用 stash 暂存区方式合并代码,如手动终止脚本、执行失败停止脚本,需检查是否执行了 $ git stash pop 命令,没有执行需要手动执行放出暂存区的代码,以免丢失 0/1/true/false/Ture/False true
-m, --message [msg] 提交日志信息 - 当前时间 + 提交优化

fix 含义 支持传参 默认值
-p, --push [type] 修复完成后,将代码提交到远程分支 0/1/true/false/Ture/False true
-g, --go [branch] 合并提交结束后,切换到指定分支 分支名称 -
-m, --message [msg] 提交日志信息 - 当前时间 + 修复分支偏移

config 含义 支持传参 默认值
set 修改默认配置 必传(例:$ ggit config set -t dev -
get 查看默认配置 必传(例:$ ggit config get -t dev
-t, --to [branch] 合并到指定的分支 分支名称 dev
-s, --stash [type] 是否使用 stash 暂存区合并状态 0/1/true/false/Ture/False true

  • 子命令参数使用
    例如:当前在 2.0 分支,需要直接提交当前分支,使用默认备注即可。
$ ggit push 
  • 例如:当前在 2.0 分支,需要带上提交备注,提交当前分支到远程。
$ ggit push -m "优化代码"
$ ggit push --message '优化代码'
  • 例如:当前在 2.0 分支,需要带上提交备注,提交当前分支到远程,提交完成后切换到 1.0 分支。
$ ggit push -m '优化代码' -g 1.0
  • 扩展性,除了支持上面的子命令外,额外支持全部 git 命令,但是不支持带参数的命令:
$ ggit add .               =       $ git add .
$ ggit commit -m '备注'     =       $ git commit -m '备注'
$ ggit pull                =       $ git pull
....
# 基本所有不带参的 git 命令都支持
# 只有执行 push、merge 命令时会被 ggit 拦截,并使用 ggit 的 push、merge
$ ggit push origin master  =       执行的是 $ ggit push,而不是 $ git push,多余的参数会不生效,merge 同理,其他命令都不会被拦截,因为不同名。
# 什么叫带参命令,例如:
$ git branch --set-upstream-to=origin/<分支> 5.0
# 如果确实要用,肯定不如直接使用 git,但是也能用,使用 '' 或 "" 包裹一下即可
# $ ggit '包裹的命令'
$ ggit 'branch --set-upstream-to=origin/<分支> 5.0'
# -- 或 - 开头的就是参数,不支持 git 的这种带参命令,不带参数的都支持

四、与 Git 原生命令对比

  • 提交代码
# 原生
$ git add .
$ git commit -m '优化代码'
$ git pull origin 当前分支
$ git push origin 当前分支
# ggit
$ ggit push -m "优化代码"
# 如果不需要备注,使用默认备注
$ ggit push
  • 修复 BUG,提交当前分支,合并到 dev 分支,并切回当前开发分支或其他分支
# 原生
$ git add .
$ git commit -m '优化代码'
$ git pull origin 开发分支
$ git push origin 开发分支
$ git checkout dev
$ git pull origin dev
$ git merge 开发分支
# 在这环节,ggit 如果 merge 遇到冲突,解决后,继续执行一遍 merge 命令,也能完成提交代码,加上 -g 就能再次回到指定分支
# 也可以使用 push 命令上传,原生命令就还的 add 敲一遍。
$ git push origin dev
$ git checkout 开发分支/指定分支
# ggit
# 提交合并完成回到当前分支(-g 默认当前分支)
$ ggit merge -m "优化代码"
# 提交合并完成回到指定分支
$ ggit merge -m "优化代码" -g 1.0
# 如果不需要备注,使用默认备注
$ ggit merge

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
29天前
|
开发工具 git
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
这篇文章是关于Git常用命令的总结,包括初始化配置、基本提交、分支操作、合并、压缩历史、推送和拉取远程仓库等操作的详细说明。
98 1
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
|
1月前
|
开发工具 git 开发者
关于git 解决分支冲突问题(具体操作,包含截图,教你一步一步解决冲突问题)
本文通过具体操作和截图,详细讲解了如何在Git中解决分支冲突问题,包括如何识别冲突、手动解决冲突代码、提交合并后的代码,以及推送到远程分支。
270 3
关于git 解决分支冲突问题(具体操作,包含截图,教你一步一步解决冲突问题)
|
2月前
|
缓存 开发工具 git
Git创建分支以及合并分支
在Git中,创建分支使用`git branch [branch_name]`,切换分支使用`git checkout [branch_name]`。修改文件后,通过`git add [file]`添加到暂存区,然后`git commit`提交到本地仓库。如果是新建分支的第一次推送,使用`git push origin [branch_name]`推送到远程仓库,之后可以简化为`git push`。合并分支时,使用`git merge [branch_name]`将指定分支的更改合并到当前分支。
52 2
Git创建分支以及合并分支
|
30天前
|
开发工具 git
Git分支使用总结
Git分支使用总结
32 1
|
1月前
|
开发工具 git
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
35 1
|
1月前
|
编译器 开发工具 数据安全/隐私保护
Git——多人协作/版本控制,在一个gitee仓库下开发(Gitee版教程)手把手教学,包好用的!
本文提供了一个关于如何在Gitee上进行多人协作和版本控制的详细教程,包括新建和初始化仓库、克隆仓库、邀请好友共同管理仓库以及注意事项,旨在帮助用户顺利进行代码协作开发。
115 0
Git——多人协作/版本控制,在一个gitee仓库下开发(Gitee版教程)手把手教学,包好用的!
|
25天前
|
Unix Shell 网络安全
git学习六:(bug总结)git@github.com: Permission denied (publickey).等
本文是关于解决在使用Git和GitHub时遇到的“git@github.com: Permission denied (publickey)”错误的指南。文章提供了详细的步骤,包括确认SSH Agent运行状态、检查密钥配置、确保密钥匹配、验证仓库URL、检查权限和代理设置,以及配置SSH文件。这些步骤帮助用户诊断并解决SSH认证问题。
64 0
|
2月前
|
存储 Linux 开发工具
Git基础命令,分支,标签的使用【快速入门Git】
本文详细介绍了Git版本控制系统的基础概念和常用命令,包括工作区、暂存区和版本库的区别,文件状态的变化,以及如何进行文件的添加、提交、查看状态、重命名、删除、查看提交历史、远程仓库操作和分支管理,还涉及了Git标签的创建和删除,旨在帮助读者快速入门Git。
Git基础命令,分支,标签的使用【快速入门Git】
|
2月前
|
测试技术 开发工具 git
掌握 Git 分支策略:提升你的版本控制技能
在现代软件开发中,版本控制至关重要,Git 作为最流行的分布式版本控制系统,其分支管理策略对于高效协作和代码维护尤为重要。本文介绍了几种常用的 Git 分支策略,包括主线开发模型、功能分支模型、Gitflow 工作流和 Forking 工作流,并探讨了如何根据项目需求选择合适的分支模型。通过保持 `master` 分支稳定、及时合并清理分支、使用命名规范、利用 Pull Request 进行代码审查及自动化测试等最佳实践,可以显著提升团队协作效率和软件质量。掌握这些策略将帮助开发者更好地管理代码库,加快开发流程。
|
3月前
|
项目管理 开发工具 git