shell脚本整理git修改前后

    之前用svn,图形化界面,可以很容易导出修改前后,以文件的形式。然后用beycond compare进行对比,很好用。

 

使用git没发导出修改前后,只能看diff文件,显示不全。

所以制作了一个shell脚本,不是太完善,还能用。

使用方法:

1、修改DIR为想要DIR为修改前后存放的地方,修改head_hash为git log最后的hash

2、把源码文件存为commit_befor_after.sh放到可以执行git命令的地方,然后执行

./commit_befor_after.sh hash1_before hash2_after

其中hash1_before是修改前的hash,hash2_after是修改后的hash。

执行完毕后在~/commit_befor_after下就可以看到修改前后。

另外会在当前文件夹下产生list.txt文件,里面存放的是修改文件清单。

3、源码如下,根据需要可以自己修改。

#!/bin/sh
DIR=~/commit_befor_after
head_hash=XXXXXXXXXX

echo The before hash:"$1"
echo The after  hash:"$2"

rm ${DIR}/before/ -rf
rm ${DIR}/after/ -rf
mkdir -p ${DIR}/before/
mkdir -p ${DIR}/after/

echo git diff --name-status "$1" "$2"
cmd1=$(echo git diff --name-status "$1" "$2")
$cmd1| awk '{print $2}' > list.txt

filelist=$(cat list.txt)
echo $filelist
echo

 echo ----------work begin------------------------------------
 echo git reset "$2" begin
 git reset "$2" --hard
 
 for file in $filelist
do
 echo cp --parents ${file} ${DIR}/after/
 cp --parents ${file} ${DIR}/after/  
done

echo  
 echo git reset "$1"
 git reset "$1" --hard
 
for file in $filelist
do
 echo cp --parents ${file} ${DIR}/before/
 cp --parents ${file} ${DIR}/before/
done

 echo
 echo git reset--hard HEAD
 git reset $head_hash --hard
 echo ----------work end-------------------------------------

更新代码:

#!/bin/sh

DIR=~/git_before_after



echo The before hash:"$1"

echo The after  hash:"$2"



rm ${DIR}/before/ -rf

rm ${DIR}/after/ -rf

mkdir -p ${DIR}/before/

mkdir -p ${DIR}/after/



echo git diff --name-status "$1" "$2"

cmd1=$(echo git diff --name-status "$1" "$2")

$cmd1| awk '{print $2}' > ${DIR}/modifyFileList.txt



filelist=$(cat ${DIR}/modifyFileList.txt)

echo $filelist

echo



 echo ----------work begin------------------------------------

 echo git checkout "$2"

 git checkout "$2"

 

 for file in $filelist

do

 echo cp --parents ${file} ${DIR}/after/

 cp --parents ${file} ${DIR}/after/  

done



echo  

 echo git checkout "$1"

 git checkout "$1"

 

for file in $filelist

do

 echo cp --parents ${file} ${DIR}/before/

 cp --parents ${file} ${DIR}/before/

done



 echo

 echo git checkout master

 git checkout master

 echo ----------work end-------------------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值