有时不便于新建新分支,需要提取差分包进行保存可以用如下命令进行提取
git diff 608e120 4abe32e --name-only | xargs zip update.zip
git diff --name-only | xargs zip update.zip
上面的命令git diff无法对未tracked的文件进行提取,如下的脚本即可一次性提取当时修改状态 的所有文件,包括未提交过的新增文件。
#如果因为在WINDOWS下编辑过此文件,需要在LINUX下面把此脚本用dos2unix patch_command.sh 重新格式化一下才能执行
#导出GIT当前的修改状态
git status -s > ../exportlist;
#对导出的文件列表进行编辑
sed -i 's/^...//g' ../exportlist;
#因脚本放在工程根目录,GIT STATUS会导出需要定向删除
sed -i '/patch_command.sh/d' ../exportlist
#把导出文件列表打包成ZIP压缩包
cat ../exportlist |xargs zip -r update.zip;
rm ../exportlist
如下脚本可以实现同步更新多个GIT仓库的代码,并同步生成日志文件及输出到屏幕。
如果用如下脚本需要根据目录进行适当修改。我管理的是多个MTK的仓库代码及一些分支,我管理 了十几个仓库,只贴出了一部分,
git_update.sh
#按格式生成当前日期
time=$(date "+%Y-%m-%d %H:%M:%S")
echo $time 2>&1 |tee -a ./git_result.txt;
#git pull 6.0
cd M_6.0/ALPS-MP-M0.MP1-V2.84_LEN6737M_65_M0;
echo -e '\n\n' 2>&1 |tee -a ../../git_result.txt;
echo "ALPS-MP-M0.MP1-V2.84_LEN6737M_65_M0" 2>&1 |tee -a ../../git_result.txt;
#echo -e '\n' >> ../../git_result.txt;
git pull 2>&1 |tee -a ../../git_result.txt;
#git pull 7.0
echo -e "\n\n" 2>&1 |tee -a ../../git_result.txt;
cd ../../N_7.0/ALPS-MP-N0.MP1-V1.0.2_LEN6737M_65_N/;
echo "ALPS-MP-N0.MP1-V1.0.2_LEN6737M_65_N" 2>&1 |tee -a ../../git_result.txt;
#echo -e '\n' >> ../../git_result.txt;
git pull 2>&1 |tee -a ../../git_result.txt;
#8.0 modem
#git pull mt6737_alps-mp-o1.mp1
cd ../../O_8.1/mt6737_alps-mp-o1.mp1/;
echo -e "\n\n" 2>&1 |tee -a ../../git_result.txt;
echo "mt6737_alps-mp-o1.mp1" 2>&1 |tee -a ../../git_result.txt;
#echo -e '\n' >> ../../git_result.txt;
git pull 2>&1 |tee -a ../../git_result.txt;