介绍
在团队中使用 Git 时,经常会出现需要撤消最后一次提交的需求,对于程序员来说很简单,但是对于非程序员就太困难了。
因为实际处理时要考虑提交是否已推送,已推送的提交无法撤消。
环境
解决方案
撤消提交脚本
这种是否已推送的情况可以使用脚本检查,因此编写脚本可以暴露出简单的接口,同时隔离复杂的实现。
将以下内容保存为脚本 Tools/Git/Reset.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#!/bin/bash
set -e
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
UNPUSHED=`git -C $DIR cherry`
if [[ -n $UNPUSHED ]]
then
git -C $DIR reset --soft head~
echo '成功撤消一个未推送的提交'
else
echo '无提交可撤消'
fi
read -n 1 -s -r -p "按任意键继续..."
|
桌面快捷方式
将以下内容保存为脚本 setup.bat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
echo "Create Reset shortcut on Desktop"
set DIR=%~dp0
CALL :SHORTCUT Reset %DIR%Tools/Git/Reset.sh
pause
GOTO :EOF
:SHORTCUT
set SCRIPT="%TEMP%\%RANDOM%-%RANDOM%-%RANDOM%-%RANDOM%.vbs"
echo Set oWS = WScript.CreateObject("WScript.Shell") >> %SCRIPT%
echo sLinkFile = "%USERPROFILE%\Desktop\%1.lnk" >> %SCRIPT%
echo Set oLink = oWS.CreateShortcut(sLinkFile) >> %SCRIPT%
echo oLink.TargetPath = "%2" >> %SCRIPT%
echo oLink.Save >> %SCRIPT%
cscript /nologo %SCRIPT%
del %SCRIPT%
GOTO :EOF
|
使用方法
- 由于使用 bash 脚本实现此功能,需要在安装 Git 时勾选 sh 文件关联,如果之前已安装过可以重装。
- 将脚本保存后提交到仓库中。
- 其他人使用时需要执行初始化脚本
setup.bat
在桌面创建快捷方式,方便使用。
实践结果
在 Windows 上使用非常方便,不用去介绍如何在 GUI 中选中上一次提交并在右键菜单中点击重置,只要双击就可以,完全自动化、傻瓜化。