Git闯关游戏:Learn Git Branching Level 4-5 Git Describe

233 阅读2分钟



Level 4-5 《Git Describe》

image.png

这一关使用git describe帮助你在提交历史中移动了多次以后找到方向,不仅在游戏里学习,你还可以在真实环境中进行实验。



游戏答案:

describe返回结果含义: 距离最近的tag_距离几次提交_g指定提交的哈希值

# 距离main最近的tag
git describe main
-------------------------------------
v0_2_gC2	# 最近的tag是v0_距离两次提交_gMAIN处的哈希值是C2



# 距离bugFix最近的tag
git describe bugFix
-------------------------------------
v1_2_gC6



# 距离v1最近的tag
git describe v1
-------------------------------------
v1			# 指定位置本身就是一个tag



# 距离c3最近的tag
git describe c3
-------------------------------------
v1



# 距离side最近的tag
git describe side
-------------------------------------
v1_1_gC4


# 做一次提交结束游戏
git commit



准备实验环境

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

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

# 初始化本地仓库,然后做两次提交
git init

echo 111>>a.txt
git add .
git commit -m "c0"

echo 222>>a.txt
git add .
git commit -m "c1"

# 创建side分支但不切换到该分支
git branch side

# 在master再做一次提交
echo 333>>a.txt
git add .
git commit -m "c2"

# 切换到上面创建的side分支,然后做一次提交
git checkout side
echo 444>>a.txt
git add .
git commit -m "c3"

# 创建bugFix分支但不切换到该分支
git branch bugFix

# 继续在side分支做一次提交
echo 555>>a.txt
git add .
git commit -m "c4"

# 切换到bugFix分支做两次提交
git checkout bugFix
echo 666>>a.txt
git add .
git commit -m "c5"
echo 777>>a.txt
git add .
git commit -m "c6"

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

下面要用到提交的ID:

image.png

# 使用c0提交的ID,创建tag v0
git tag v0 43dd

# 使用c3提交的ID,创建tag v1
git tag v1 0cbc

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

image.png



真实答案:

git describe master --tags
-------------------------------------
v0-2-g712fe5d	# 最近的tag是v0_距离两次提交_gMASTER处的哈希值是712fe5d




git describe bugFix --tags
-------------------------------------
v1-2-g5b51b12




git describe v1 --tags
-------------------------------------
v1			# 指定位置本身就是一个tag




git describe 0cbc --tags
-------------------------------------
v1




git describe side --tags
-------------------------------------
v1-1-ge6d8936




git commit -m "c7"