npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

cggit

v2.3.3

Published

一个基于 node 将 Git 提交、合并命令简化的小工具,一行命令搞定提交、合并、分支偏移。

Downloads

6

Readme

一、简介

  • cggit 更名为 ggitt,请优先安装最新包名,使用指令不变!

  • 在开发过程中,习惯用 Git 命令 提交、合并代码的小伙伴会发现,经常在重复的敲提交代码就算了,尤其是测试环节,修好之后,来回切换提交、合并操作,所以这也是很多小伙伴选择用可视化操作的原因。

  • 博主就是一个喜欢用 Git 命令 的人,不太喜欢可视化的软件。所以使用 NodeGit 相关命令进行包装,做了一个自动化命令工具 cggit。附 GitHub 地址

  • 在自动化命令的基础上,还额外支持所有不带参的 git 原生命令,下面使用中有说明什么叫不带参命令。

  • 在执行 cggit 自动化命令过程中遇到冲突,解决后,可继续执行一遍相关命令 push, merge 完成提交。

    cmd.png

二、安装

  • 请务必安装好 GitNode 环境。

    Windows 包管理工具:winget

    Mac 包管理工具:homebrew

    Linux 包管理工具:Yum

    各平台都可以通过包管理工具快速安装 GitNode

  • cggit 安装到全局

    $ npm i -g cggit

    使用命令:两种指令方式都可以 $ ggit xxx$ gitt xxx

    $ ggit -v
    
    $ gitt -v
    
    # 以上两种方式都可以,主要为了方便在敲出 git 指令前后都不需要修改也可以快速直接使用。
    # 下面文章介绍主要就以 ggit 指令为例,可自行将 ggit 替换为 gitt

    如果安装失败,可将镜像切换到官方镜像尝试,推荐使用 nrm 管理镜像

    # 查看镜像
    $ npm get registry
    
    # 切换为官方镜像
    $ npm config set registry https://registry.npmjs.org
    
    # 切换为淘宝镜像
    $ npm config set registry https://registry.npmmirror.com
  • 可通过 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]       以当前分支为基础,新建分支
      -b                列出当前分支
      -bl               列出本地分支
      -br               列出远程分支
      -ba               列出所有分支
      -g, --go [branch] 切换到指定分支,如本地没有会拉取远程分支
      -c, --checkout [b]切换到指定分支,如本地没有会拉取远程分支,跟 -g 一样效果,为了习惯
      -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 | --version | 查看版本 | - | - | | -g, --go [branch] | 切换到指定分支,如本地没有会拉取远程分支 | 分支名称 | - | | -c, --checkout [branch] | 切换到指定分支,如本地没有会拉取远程分支,跟 -g 一样效果,为了习惯 | 分支名称 | - | | -b [branch] | 以当前分支为基础,新建分支 | 分支名称 | - | | -b | 列出当前分支 | - | - | | -bl | 列出本地分支 | - | - | | -br | 列出远程分支 | - | - | | -ba | 列出所有分支 | - | - | | -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 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 的这种带参命令,不带参数的都支持,例如:
    $ ggit commit -m '备注' # -m 参数会无法识别到,可以使用 $ ggit '包裹的命令' 的方式执行带参命令

四、与 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