行者孙Python

协作篇-Day22|组队分工:多人协作流程,git fetch 与 pull 区别

📖 知识点

1. 多人协作标准流程(每天开工循环)

开工: git pull  →  同步远程最新代码
开发: 改代码 → git add → git commit(本地提交)
收工: git pull → 再同步(防止远程有新提交)
发布: git push  → 推送本地提交到远程

 

核心原则:先 pull 同步,再开发,提交前再 pull,最后 push。这样远程和本地始终保持同步,减少冲突。

💡 生活比喻多人协作像 "排队交作业":交之前先看看档案室有没有人抢先更新了(pull),没有就直接交(push);有就先把自己的跟人家的合并好再交。

2. git fetch vs git pull(核心区别)

 

命令做了什么生活比喻

git fetch

只把远程更新下载到本地,不合并到档案室 "看一眼" 有什么新文件,先不拿

git pull

下载并自动合并到当前分支直接拿走新文件并更新到手

 

git fetch            # 只看远程有没有新提交,不改变工作区
git pull             # 下载并合并,工作区直接更新

 

3. 为什么有 fetch?

git fetch 让你先看再决定:先下载更新,用 git log 或 git diff 看清差异,确认无误后再手动 git merge,更可控。pull 是 "fetch + merge" 的快捷方式。

git fetch
git merge origin/master   # 手动合并(fetch后再决定合不合)

 

⚠️ 易错提醒

  1. git fetch 只下载不合并;git pull 下载并自动合并

  2. 日常图省事用 git pull;想先看清差异再合并,用 git fetch + git merge

  3. 多人协作记住流程:先 pull、再开发、提交前 pull、最后 push

⚔️ 剧情 Kata 实战任务

任务需求:

  1. 模拟远程有新提交(在模拟远程 / 备份里提交)

  2. 在主仓库先 git fetch,观察:下载但不合并

  3. 用 git status / git log 确认 fetch 没改工作区

  4. 再用 git merge 手动合并,或直接 git pull

  5. 体会 fetch(只看)和 pull(取 + 合)的区别

参考代码(在终端依次敲)

# 0. 模拟队友在远程提交
cd ~/外卖App备份
echo "def 会员日(): return '双倍积分'" >> 外卖App.py
git add 外卖App.py
git commit -m "feat: 新增会员日活动"

# 1. 主仓库:先只 fetch(下载但不合并)
cd ~/外卖App
git fetch ~/外卖App备份 master

# 2. 观察:fetch 后工作区没变
git status          # 仍是原来的,没自动合并
git log --oneline   # 本地历史没有新提交

# 3. 再手动合并(把fetch下来的合进来)
git merge FETCH_HEAD

# 4. 验证已同步
git log --oneline

 

运行示例:

user@linux:~/外卖App$ git fetch ~/外卖App备份 master
From /home/user/外卖App备份
 * branch            master -> FETCH_HEAD

user@linux:~/外卖App$ git status
On branch master
nothing to commit, working tree clean   # fetch后没自动合并,工作区干净

user@linux:~/外卖App$ git merge FETCH_HEAD
Updating 9d0e1f2..e2f3a4b
Fast-forward
 外卖App.py | 1 +
 1 file changed, 1 insertion(+)

user@linux:~/外卖App$ git log --oneline
e2f3a4b feat: 新增会员日活动
9d0e1f2 feat: 新增优惠满减
...

 

💡 完成动作示意:

  1. git fetch → 下载了远程新提交,但 git status 显示工作区没变(没合并)

  2. git merge FETCH_HEAD → 手动把下载的内容合并进来

  3. git log 看到新提交 ——fetch 先看、merge 再合,这就是和 pull 的区别!

🧠 思考题

  1. git fetch 和 git pull 的核心区别是什么?pull 相当于 "哪两个命令的组合"?(提示:fetch + merge)

  2. 多人协作 "开工前先 pull、提交前再 pull、最后 push" 这个流程,为什么能减少冲突?

‹ 返回目录
🏠首页 Python 📦资源 👤关于我