From bd3b6d74cfca82304a9ddcd7140f13f9f49b15d4 Mon Sep 17 00:00:00 2001 From: Motonori Iwata Date: Wed, 24 Aug 2011 11:02:22 +0900 Subject: [PATCH] =?UTF-8?q?--rebase=E3=81=AE=E9=9A=9B=E3=81=AB=E7=AC=AC?= =?UTF-8?q?=E4=BA=8C=E5=BC=95=E6=95=B0=E3=81=A7branch=E5=85=83=E3=81=AEbra?= =?UTF-8?q?nch=E5=90=8D=E3=82=92=E6=8C=87=E5=AE=9A=E3=81=99=E3=82=8B?= =?UTF-8?q?=E3=81=93=E3=81=A8=E3=81=A7working=20branch=20=E4=B8=8A?= =?UTF-8?q?=E3=81=AEnow=E3=81=97=E3=81=9Flog=E3=81=AE=E3=81=BF=E3=82=92?= =?UTF-8?q?=E6=A4=9C=E7=B4=A2=E3=81=97=E3=81=A6rebase=E7=AF=84=E5=9B=B2?= =?UTF-8?q?=E3=81=AB=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E3=81=97?= =?UTF-8?q?=E3=81=9F.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- git-now | 48 +++++++++++++++++++++++++++++++++--------------- 1 file changed, 33 insertions(+), 15 deletions(-) mode change 100644 => 100755 git-now diff --git a/git-now b/git-now old mode 100644 new mode 100755 index 8a7158b..03c5207 --- a/git-now +++ b/git-now @@ -5,30 +5,48 @@ 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 - + 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 - + 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}^ + git rebase -i ${FIRST_NOW_COMMIT}^ else - WORKING_BRANCH=`git branch -l | grep "*" | cut -d " " -f 2` + 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} + 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