🎯 大白话解释

git stash && git pull && git stash pop 就像:

📦 把桌上的文件暂时放进抽屉 → 🔄 从公司服务器拿最新文件 → 📦 把抽屉里的文件重新拿出来放到桌上

📝 具体例子说明

场景:

你正在修改 report.txt 文件,这时候同事说服务器上有新的重要更新需要立即获取。

没有 stash 的情况:

# 你直接运行 git pull,会报错:
error: cannot pull with rebase: You have unstaged changes.
# 错误!因为你的 report.txt 还没保存到正式档案里

使用 stash 的情况:

第1步:git stash - 临时打包
git stash
# 相当于:把你正在修改的 report.txt 暂时打包存起来
# 现在桌面上干干净净,可以接收新文件了
第2步:git pull - 获取更新
git pull
# 相当于:从公司服务器下载同事的最新文件
# 现在你有了所有人的最新版本
第3步:git stash pop - 恢复工作
git stash pop
# 相当于:把你之前打包的 report.txt 重新拿出来
# 现在你既有了最新文件,又继续你之前的工作

🔄 完整流程演示

# 假设你正在修改两个文件:
# - report.txt(写了新内容)
# - data.csv(更新了数据)

# 1. 查看当前状态
git status
# 输出:modified: report.txt, modified: data.csv

# 2. 临时打包保存
git stash
# 输出:Saved working directory and index state WIP on main: abc1234 上次提交信息

# 3. 现在桌面干净了
git status
# 输出:nothing to commit, working tree clean

# 4. 获取最新代码
git pull
# 输出:从远程拉取了最新版本

# 5. 恢复你的工作
git stash pop
# 输出:恢复了 report.txt 和 data.csv 的修改
# 现在你可以继续工作了!

⚠️ 可能遇到的情况

情况1:完美恢复

# 如果你的修改和服务器更新不冲突
git stash pop
# 输出:顺利恢复,没有冲突

情况2:有冲突

# 如果你和同事修改了同一行代码
git stash pop
# 输出:CONFLICT - 需要手动解决冲突
# 这时候你需要编辑文件,选择保留哪个版本

💡 实际工作中的应用场景

场景A:紧急修复bug

# 你正在开发新功能,突然要修复紧急bug
git stash        # 暂存新功能代码
git checkout main
# 修复bug,测试,部署...
git checkout feature-branch
git stash pop    # 恢复新功能开发

场景B:同步团队代码

# 每天早上的例行操作
git stash        # 暂存昨天没完成的工作
git pull         # 获取团队最新代码
git stash pop    # 在最新代码基础上继续工作

场景C:切换任务

# 正在做任务A,突然要处理任务B
git stash -m "任务A进度保存"
# 处理任务B...
git stash pop    # 回到任务A

🎯 一句话总结

git stash && git pull && git stash pop = 先把你的"半成品"临时收起来,拿到大家的"最新成品",再把你的"半成品"拿出来继续加工

这样既不会丢失你的工作,又能及时获得团队的最新进展!

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐