Git闯关游戏:Learn Git Branching Level 2-4 撤销变更(reset和revert)

377 阅读1分钟



Level 2-4 《撤销变更(reset和revert)》

2022-08-04_132659.png

这一关分别使用resetrevert命令来撤销变更,不仅在游戏里学习,你还可以在真实环境中进行实验。



游戏答案:

# 撤销local分支的最新提交,将local重置到c1提交位置
git reset HEAD~1

# 切换到pushed分支
git checkout pushed

# 将pushed分支的上一次提交c1复制到一个新建的提交c2'
git revert HEAD



准备实验环境

下面命令完整CV到Windows cmd命令行窗口中执行:

# 准备一个空目录
mkdir level-2-4
cd level-2-4

# 初始化本地仓库
git init

# 在master分支提交两次
echo 111>>a.txt
git add .
git commit -m "c0"
echo 222>>a.txt
git add .
git commit -m "c1"

# 创建并切换到pushed分支
git checkout -b pushed

# 在pushed分支提交一次
echo 333>>a.txt
git add .
git commit -m "c2"

# 切换到master分支
git checkout master

# 创建并切换到分支local
git checkout -b local

# local分支提交一次
echo 444>>a.txt
git add .
git commit -m "c3"

# 查看提交树
git log --graph --pretty=oneline --all

image.png



真实答案:

下面命令完整CV到Windows cmd命令行窗口中执行:

git reset "HEAD~1" --hard

git checkout pushed

# 将git提交信息编辑器设置为notepad记事本
set GIT_EDITOR=notepad

git revert HEAD

revert会添加一个新的提交,它的状态与HEAD的上一个提交状态一致,创建这个新的提交时需要提供提交信息。 在弹出的记事本中,将提交信息修改为c2',然后保存、关闭记事本

image.png

记事本关闭后,git会继续完成revert操作,最后再查看提交记录:

git log --graph --pretty=oneline --all

image.png