Git闯关游戏:Learn Git Branching Level 6-8 锁定的Main(Locked Main)

564 阅读2分钟



Level 6-8

2022-08-31_181652.png

大的团队开发中,主分支往往会被锁定。

如果你不小心在本地的主分支上做了提交,是无法向被锁定远程主分支推送的,这时可以先创建一个新的分支,再将主分支reset到上一个提交与远程保持一致,之后把新的分支推送到远程仓库。不仅在游戏里学习,你还可以在真实环境中进行实验。

游戏答案:

# 撤销最新的提交,回到上一个提交
git reset o/main

# 在c2提交位置新建个分支feature,并切换到这个分支
git checkout -b feature C2

# 将feature分支推送到远程仓库
git push origin feature



创建远程仓库

你需要为这一关创建一个远程仓库,本文以gitee为例进行演示。

  1. 点击右上角加号创建仓库

    image.png

  2. 为仓库命名
    这一步只起一个仓库名称即可,不要勾选其他选项

    image.png

  3. 复制仓库地址

    image.png



准备实验环境

这里设置一个临时环境变量,保存你的远程仓库地址,也就是上面你复制的远程仓库地址,后面用到远程仓库地址时直接引用该变量:

set LGB_REMOTE=https://gitee.com/你的账户/你的远程仓库

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

# 准备一个空目录
mkdir level-6-8
cd level-6-8

# 初始化本地仓库
git init

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

# 关联远程仓库,将远程仓库命名为origin(习惯名)
git remote add origin %LGB_REMOTE%

# 向远程仓库推送
git push origin -f -u --all

# 在本地仓库中再提交一次
echo 333>>a.txt
git add .
git commit -m "c2"

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

image.png



真实答案:

# 撤销最新提交,将master移动到上一个提交
git reset origin/master --hard

最新提交被撤销了,使用git log看不到被撤销的提交历史。

可以使用git reflog命令,查看全部提交记录,包括被撤销的提交记录也可以看到。

git reflog

记下c2提交的ID,后面要使用这个ID:

image.png

# 在a65a提交上创建feature分支,并切换到这个分支
git checkout -b feature a65a

# 向远程仓库提交feature分支
git push origin feature

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

image.png