文章目录
- 前言
- 一、将git最后一次提交把涉及到的文件按原来目录结构提取出来
前言
将git最后一次的提交提取出来,涉及到的目录结构以及文件等,按原本的目录结构复制输出。并输出相关的补丁。
一、将git最后一次提交把涉及到的文件按原来目录结构提取出来
#!/bin/bash
target_path1="/mnt/rockchip-android14-mid-rkr5"
function git_lastcommit_creat()
{
if [ -d $1/.git ];then
cur_path=$(pwd)
cd $1
FIRST_COMMIT_HASH=$(git rev-parse HEAD)
#把特殊字符转化成 - ,便于创建文件夹
FIRST_COMMIT_NAME=$(echo "$(git log -1 --format='%s%n%b')"| \
sed -e 's/[[:space:]]/-/g' \
-e 's/[][\!@#$%^&*()=+{}|;:",.<>?]/-/g' \
-e 's/--/-/g' \
-e 's/^-//' \
-e 's/-$//')
echo $FIRST_COMMIT_NAME $FIRST_COMMIT_HASH
git show --name-only --pretty=format: $FIRST_COMMIT_HASH | tail -n +2 | while read file; do
mkdir -p "$cur_path/$FIRST_COMMIT_NAME/$(dirname "$file")"
git show "$FIRST_COMMIT_HASH:$file" > "$cur_path/$FIRST_COMMIT_NAME/$file"
done
git show $FIRST_COMMIT_HASH > $cur_path/$FIRST_COMMIT_NAME.patch
cd $cur_path
ls -l $cur_path/$FIRST_COMMIT_NAME/
else
echo "please input git path ..."
fi
}
git_lastcommit_creat $target_path1