Git闯关游戏:Learn Git Branching Level 6-4 Git Pull

160 阅读2分钟



Level 6-4 《Git Pull》

git pull命令相当于git fetch+git merge,先下载远程分支,再合并到本地分支。

这一关使用git pull来下载远程分支,然后将远程分支合并到本地分支。不仅在游戏里学习,你还可以在真实环境中进行实验。



游戏答案:

# 下载远程分支,然后将远程分支合并到本地分支
git pull



创建远程仓库

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

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

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

  3. 复制仓库地址
    image.png



准备实验环境

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

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

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

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

# 初始化本地仓库
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%

# 将本地仓库推送到远程仓库
# -f 强制提交,远程仓库会被覆盖。
# -u 本地分支会关联同名的远程分支
# --all 全部分支
git push origin -f -u --all

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

# 回上层目录
cd ../

# 将远程仓库克隆到一个临时文件夹
# 后面模拟你的另一个同事更改了远程仓库
git clone %LGB_REMOTE% level-6-4-tmp

# 进入临时文件夹,然后做一次提交
cd level-6-4-tmp
echo 444>>a.txt
git add .
git commit -m "c3"

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

# 删除临时目录
cd ../
rmdir level-6-4-tmp /S /Q

# 回到本地仓库目录
cd level-6-4

# 查看提交树,现在本地仓库比远程仓库进度落后了
git log --graph --pretty=oneline --all

本地仓库的三次提交是c0c1c2

image.png

远程仓库的三次提交是c0c1c3

image.png



真实答案:

# 下载远程仓库的最新提交,然后与本地分支进行合并
git pull

下载的文件与本地文件发生了冲突:

image.png

这时需要手动修正文件,然后再生成合并后的提交:

# 手动修正a.txt后再继续

# 生成合并后的提交
git add .
git commit -m "c4"

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

image.png