什么是git subcommand,如何创建git子命令?

  大多数git用户知道如何在git中创建一个alias以便更便利地使用相关命令。很少有人知道至少不会好好利用的是:你实际上可以为Git创建扩展或者plugin,以便上git完成任何你希望完成的工作。这就是Git subcommand!

  应该如何创建git子命令呢?

1.创建一个shell或者bash脚本来完成你希望它做的工作;

2.将你的脚本文件命名为git-name,这样name就将成为git name中的子命令了!

3.将该脚本放到/usr/local/bin或其他任何$PATH指定的路径中;

4.运行git name命令调用上述脚本

通过上述方法虽然可以创建多个脚本文件来完成一个个小的功能扩展,但是一旦功能变多,则会显得混乱。一个比较好的组织sub command所完成任务的方式是可以将一堆工作脚本通过一个wrapper脚本来整合:

1.创建一个wrapper或者access point

2.为你希望执行的每一个子命令创建一个file/script

3.使用你的wrapper来加载并且运行你的sub-command scripts;

#!/usr/bin/env sh
version() {
    echo "adamcodes git plugin v0.1.0"
    echo
}
usage() {
    echo "usage: git adamcodes <subcommand>"
    echo
    echo "Available subcommands are:"
    echo "hello <name>  Print out Hello World or Hello <name> (if provided)"
}
main() {
    if [ "$#" -lt 1 ]; then  //if the number of options is less than one
        usage; exit 1
    fi

    local subcommand="$1"; shift

    case $subcommand in
        "-h"|"--help")
            usage; exit 0
            ;;
        "-v"|"--version")
            version; exit 0
            ;;
    esac

    export WORKINGDIR=$(dirname "$(echo "$0" | sed -e ‘s,\\,/,g‘)")
    if [ ! -e "$WORKINGDIR/git-adamcodes-$subcommand" ]; then
        usage; exit 1
    fi

    source "$WORKINGDIR/git-adamcodes-$subcommand"

    if [ ! type "cmd_$subcommand" ]; then
        usage; exit 1
    fi

    cmd_$subcommand "[email protected]"
}

上面内容可以参考: https://adamcod.es/2013/07/12/how-to-create-git-plugin.html

https://adamcod.es/2013/07/19/how-to-create-git-plugin-part2.html

git 子命令在release管理中的应用案例:

在网站的release管理中,可能现在实用的是这样一个流程:

git checkout master
git merge target_branch
git push origin master
git push origin :target_branch

或许你希望通过子命令简化一下上述流程为:

git checkout master
git validate target_branch

这个可以通过创建一个git-validate的脚本文件来实现:

#!/bin/sh

branch=$1
test -z $branch && echo "branch required." 1>&2 && exit 1

git checkout master
git merge $branch
git push origin master
git push origin :$branch

注意:为了实现一个git 子命令,我们并不一定被局限于使用shell脚本来编写代码哦,你可以使用其他比如Ruby,python等更强大的语言来实现@!

http://www.davidlaing.com/2012/09/19/customise-your-gitattributes-to-become-a-git-ninja/

时间: 2024-08-29 07:17:27

什么是git subcommand,如何创建git子命令?的相关文章

git 分支的创建、合并、删除

      基本概念与命令 分支(branch):每次提交,Git都把提交的内容串成一条时间线,这条时间线就是一个分支 .   git 分支的创建 git checkout -b gt 分支的合并 git merge git分支的删除  git branch -d git分支的查看  git branch      具体步骤 创建新的分支dev (以前的主分支是master) 查看git分支 在dev分支下添加并提交readme.txt 从dev分支切换到master分支 合并dev分支到mas

iOS 创建Git 提交到GitHub 简明讲解配步骤图

本文主要讲解下面四点,可以满足大部分开发新手老手的需要,欢迎讨论反馈! 一.创建项目时,勾选git来创建项目Git源 二.创建项目时,未勾选git的项目,创建Git源 三.第一次提交gitHub,创建代码仓库 四.本地有git源项目,提交到gitHub仓库 参考文章: 在Xcode中使用Git进行源码版本控制 使用Xcode上传代码至GitHub 一.创建项目时,就勾选了git的项目 在创建工程的最后一步Xcode会有一个复选框,如果选择了它,git源就会被添加到工程目录中. 1.打开Xcode

【Git】01、Git基础

1.Git 工具分类 命令行: Bash.Cmd.Power Shell,等 GUI: Git GUI.Github Desktop,等 IDE 集成: Visual Studio.Eclipse.IntelliJ IDE,等 2.Git工具下载及安装 在使用Git前我们需要先安装 Git.Git 目前支持 Linux/Unix.Solaris.Mac和 Windows 平台上运行. Git 各平台安装包下载地址为:http://git-scm.com/downloads 3.设置Git Bas

php 通过exec 创建git分支失败

今天给我们自己的发布系统增加一个新建分支的功能,操作比较简单,但是使用php执行shell命令的时候总是无法push分支到远程,但是登陆服务器执行却是可以的 新建分支命令如下 git fetch --all git checkout -b pmt_20160624_v10.7.4 origin/master  git push origin pmt_20160624_v10.7.4:pmt_20160624_v10.7.4 php大概代码如下,执行这个php文件是定时执行的 <?php $cmd

git 分支的创建和切换

每次提交,GIT 都会将他们串成一个时间线,截止到目前,只有一个时间线,GIT里叫这个分支为主分支,叫master,HEAD指向master,master指向提交,HEAD指向当前的分支. 一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点 当我们创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上: Git创建一个分支很

Git学习笔记2——Git版本库的创建

创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录: $ cd s: $ cd Git_Learing $ pwd s/Git_Learning pwd命令用于显示当前目录.在我的windows上,这个仓库位于s/Git_Learning. 在Windows系统中,为了避免遇到各种莫名其妙的问题,请确保目录名(包括父目录)不包含中文. 第二步,通过git init命令把这个目录变成Git可以管理的仓库: $ git init Initialized empty Git reposi

git使用(二)----创建版本库

创建版本库(操作都是在linux环境下) 什么是版本库呢?版本库又名仓库,英文名repository,其实就是一个目录,可以进行增删查改 创建一个目录,这里在根目录下创建一个git_home目录mkdir /git_homecd git_homegit init 这样就创建好了一个仓库,当然目前是一个空仓库 这个时候在当前目录通过ls -a可以看到多了一个.git的目录 把文件添加到版本库 版本控制系统可以告诉你每次的改动,比如在第5行加了一个单词"Linux",在第8行删了一个单词&

git学习之创建版本库(三)

创建版本库 什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以"还原". 所以,创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录: $ mkdir learngit $ cd learngit $ pwd /Users/michael/learngit pwd命令用于显示当前目录.在我的Mac上,这个仓

在LINUX上创建GIT服务器【转】

转自:http://blog.csdn.net/xiongmc/article/details/9176785 如果使用git的人数较少,可以使用下面的步骤快速部署一个git服务器环境. 1. Client生成 SSH 公钥,以便Server端识别. 每个需要使用git服务器的工程师,自己需要生成一个ssh公钥 进入自己的~/.ssh目录,看有没有用 文件名 和 文件名.pub 来命名的一对文件,这个 文件名 通常是 id_dsa 或者 id_rsa. .pub 文件是公钥,另一个文件是密钥.假