git 生成patch

来源:互联网 发布:什么叫淘宝刷流量 编辑:程序博客网 时间:2024/06/06 09:08

复制如下代码生成一个脚本文件, 并赋予执行权限, 即可happy的生成patch并同时保存原文件及修改后的文件:

#!/bin/bashif [ $# -lt 2 ]; then    echo "please give me two branches name or two commit id"    exit 1fiif [ ! -d .git ]; then    echo "no .git dir at all"    exit 1fiOLD=$1NEW=$2OUT=$3CWD=`pwd`BASE=`basename $CWD`if [ -z $OUT ]; then    OUT=$CWDfiecho "patch will be saved to $OUT"TIME=`eval 'date "+%F-%H%M%S"'`OLDDIR=$OUT/$BASE"_"$TIME/oldNEWDIR=$OUT/$BASE"_"$TIME/newmkdir -p $OLDDIRmkdir -p $NEWDIRfor f in `git diff $OLD..$NEW --name-only`; do    echo "copy $f ..."    rm -fr $f    git checkout $OLD -- $f    cp --parents $f $OLDDIR    git checkout $NEW -- $f    cp --parents $f $NEWDIRdonecd $OUT/$BASE"_"$TIMEdiff -Naur old new > $OUT/$BASE"_"$TIME/$BASE"_"$TIME.diffecho "patch saved to $OUT/${BASE}_$TIME done."

输出的效果如下, 即可使用对比工具进行比较查看, 又有diff文件直接使用:

├── net_2017-09-29-112738.diff├── new│   └── wifi│       └── service│           └── java│               └── com│                   └── android│                       └── server│                           └── wifi│                               └── WifiServiceImpl.java└── old    └── wifi        └── service            └── java                └── com                    └── android                        └── server                            └── wifi                                └── WifiServiceImpl.java

NOTE: 请在有包含.git的目录下执行此命令