#!/bin/sh PREFIX="from now" MESSAGE="[${PREFIX}] `date +\"%Y/%m/%d %T\"`" if [ $# -eq 0 ] then git add -u printf "${MESSAGE}\n\n%s" "`git diff --cached`" | git commit -F - elif [ $1 != "--rebase" ] then if [ $1 != "--all" ] then git add $@ else git add -u git add . fi printf "${MESSAGE}\n\n%s" "`git diff --cached`" | git commit -F - else if [ $# -eq 1 ] then FIRST_NOW_COMMIT=`git log --pretty=oneline --grep="${PREFIX}" | tail -n 1 | cut -d " " -f 1` INITIAL_COMMIT=`git log --pretty=oneline | tail -n 1 | cut -d " " -f 1` if [ ${FIRST_NOW_COMMIT} != ${INITIAL_COMMIT} ] then git rebase -i ${FIRST_NOW_COMMIT}^ else WORKING_BRANCH=`git branch -l | grep "*" | cut -d " " -f 2` git checkout ${FIRST_NOW_COMMIT} git commit --amend git rebase --onto HEAD ${FIRST_NOW_COMMIT} ${WORKING_BRANCH} fi else BASE_BRANCH=$2 WORKING_BRANCH=`git branch -l | grep "*" | cut -d " " -f 2` COMMON_ANCESTOR_COMMIT=`git merge-base ${BASE_BRANCH} ${WORKING_BRANCH}` FIRST_NOW_COMMIT=`git log ${COMMON_ANCESTOR_COMMIT}.. --pretty=oneline --grep="${PREFIX}" | tail -n 1 | cut -d " " -f 1` INITIAL_COMMIT=`git log --pretty=oneline | tail -n 1 | cut -d " " -f 1` if [ ${FIRST_NOW_COMMIT} != ${INITIAL_COMMIT} ] then git rebase -i ${FIRST_NOW_COMMIT}^ else git checkout ${FIRST_NOW_COMMIT} git commit --amend git rebase --onto HEAD ${FIRST_NOW_COMMIT} ${WORKING_BRANCH} fi fi fi