- 可以到这里下载安装
Git: git-scm.com/download/wi…- Learn Git Branching游戏在这里:learngitbranching.js.org/?locale=zh_…
Level 6-2 《远程分支》
这一关帮助你加深理解远程分支!
在本地保存的远程分支只与远程仓库保持一致,不能在本地直接移动远程分支。不仅在游戏里学习,你还可以在真实环境中进行实验。
游戏答案:
# 在本地main分支做一次提交
git commit
# 切换到在本地保存的远程main分支
git checkout o/main
# 在远程分支上提交会出现HEAD分离状态,远程分支不会跟随新提交向前移动
git commit
创建远程仓库
你需要为这一关创建一个远程仓库,本文以gitee为例进行演示。
-
点击右上角加号创建仓库
-
为仓库命名
这一步只起一个仓库名称即可,不要勾选其他选项 -
复制仓库地址
准备实验环境
这里设置一个临时环境变量,保存你的远程仓库地址,也就是上面你复制的远程仓库地址,后面用到远程仓库地址时直接引用该变量:
set LGB_REMOTE=https://gitee.com/你的账户/你的远程仓库
下面命令完整CV到Windows cmd命令行窗口中执行:
# 准备一个空目录
mkdir level-6-2
cd level-6-2
# 初始化本地仓库,然后做两次提交
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%
# 向远程仓库推送master分支
git push -f origin master
# 切换到上层目录
cd ../
下一步模拟你的同事在远程仓库中做了一次新提交,这样远程仓库前进了一步,而你自己的仓库进度落后了:
# 从远程仓库克隆,远程库克隆到一个临时文件夹
git clone %LGB_REMOTE% level-6-2-tmp
# 在临时本地库中做一次提交
cd level-6-2-tmp
echo 333>>a.txt
git add .
git commit -m "c2"
# 推送到远程仓库,这样远程仓库前进了一步
git push origin master
# 切换到上层目录
cd ../
# 删除临时文件夹
rmdir level-6-2-tmp /S /Q
# 切换回本地仓库目录
cd level-6-2
# 查看本地仓库的提交树
git log --graph --pretty=oneline --all
看到本地有两次提交。
再到远程仓库中查看一下远程仓库的提交状态:
-
看到远程仓库的进度比本地仓库多一次提交:
-
点开提交列表看看:
远程仓库进度比自己的本地仓库进度多了一个c2提交。
真实答案:
# 在本地master分支做一次提交
echo 444>>a.txt
git add .
git commit -m "c3"
# 切换到在本地存储的远程master分支,
# 再强调一下:后面不是直接在远程仓库中进行更改,我们是在访问“在本地存储的远程master分支”
git checkout origin/master
# 做一次提交
echo 555>>a.txt
git add .
git commit -m "c4"
这时会进入HEAD分离状态:
这是因为在“本地的远程分支”上提交时,它不会跟随新提交前进,它只与远程仓库中的分支保持一致!
# 查看提交树
git log --graph --pretty=oneline --all
可以看到,origin/master仍然停留在原来的位置,没有跟随新的提交c4前进: