背景
日常开发时,你是否遇到过如下场景:
-
追一个问题,尝试A方案时,改动了一些代码/文件,但没成功,准备试下B方案 ······
-
正在开发,本地有一些未提交的变更,然后有其他同学跑来找你,需要:看一个线上问题 / 基于某个分支打一个包 ······
方案
面对如上场景,我们只能选择:
- 先丢弃所有变更,再尝试新方案 —— 无法回顾
- 备份下代码/文件,再尝试新方案 —— 不方便回顾,文件多、大、散乱分布时 较为麻烦/耗时
- 提交所有变更到新的临时分支,再尝试新方案 —— 方便回顾、切换、再次编辑
简化操作
所以针对如上场景,定义了如下 alias ,以便简化一些重复操作~
【注意】
需要将如下代码 添加到
~/.bashrc文件中,在终端执行source ~/.bashrc后即可生效、使用
1. 一键备份&清空工作区
即 将当前所有变更 提交到一个新建的备份分支(cleanup/<当前分支名>_<当前时间戳>),并回到当前分支,以实现「备份&清空工作区」的效果
alias g.cleanup='git add . && cb=`git symbolic-ref --short HEAD` && dt=`date "+%Y%m%d%H%M%S"` && bb="${cb}_${dt}" && git checkout -b cleanup/$bb && git commit -m "$bb $1" && git checkout $cb && echo -e "Complete cleanup to:\n\t$bb\n\n"'
2. 一键丢弃&清空工作区
即 撤回暂存,丢弃所有修改,并移除新增文件,以实现「丢弃&清空工作区」的效果
alias g.clean='git restore --staged . && git clean -fd && git checkout . && echo -e "已丢弃工作区\n\n"'
3. 一键备份
即 通过backup.sh脚本,实现批量打包压缩的方式,备份指定文件到特定目录。
alias backup='sh ~/.bash_files/BackupFiles/backup.sh'
alias backup.install='install_path="/Users/$USER/.bash_files/BackupFiles"; git_url="https://github.com/AndyM129/BackupFiles.git"; rm -rf "$install_path"; git clone $git_url $install_path; echo "backup.sh install success: $install_path"; open $install_path;'