repo或者git diff -uno差异文件全路径备份

read -p "ReadMe:" readme && export GWDIR=date +%m%d_%H%M%S_$readme && mkdir /home/gw/backup/$GWDIR -p; git status -uno > ~/.status; cat ~/.status | grep -o -E "modified.|new file." | sed 's/modified:[ ]//' | sed 's/new file:[ ]//'| xargs -i cp --parents {} /home/gw/backup/$GWDIR; echo "PATH : $PWD" >> /home/gw/backup/$GWDIR/git.txt; echo "INFO : "$readme >> /home/gw/backup/$GWDIR/git.txt && echo "" >> /home/gw/backup/$GWDIR/git.txt ;git status >> /home/gw/backup/$GWDIR/git.txt; git diff >> /home/gw/backup/$GWDIR/diff.patch; vim /home/gw/backup/$GWDIR/git.txt; chmod 777 /home/gw/backup/$GWDIR -R && chmod +w /home/gw/backup/$GWDIR;

1.运行会提示输入修改记录的特征字符作为备份目录的尾缀,便于识别;
2.保留目标目录为/home/gw/backup/$GWDIR ,其中GWDIR即目标目录date +%m%d_%H%M%S_$readme为日期时间加上Readme输入的特征字符构成;
3.备份只备份已修改的文件和已经staged的新增文件。cp --parents拷贝基于备份目录内逐层创建修改文件的相对路径,逐个拷贝进行备份文件;
4.git status状态信息会附加到/home/gw/backup/$GWDIR/git.txt,
5.git diff也会重定向到/home/gw/backup/$GWDIR/diff.patch
6.最后会调用vim打开一个/home/gw/backup/$GWDIR/git.txt,第一行预存了当前git仓库的绝对路径,第二行可以编辑以增加修改的详情记录,往后即第4步附加的git status信息。不考虑vim编辑异常导致的信息不完善问题。
7.如果第一步read输入错误可以Ctrl+C退出,备份会终止,不做任何操作。

原文地址:https://www.cnblogs.com/kuikuitage/p/13557335.html