Day 73:Git的高级技巧:使用Git的stash暂存工作

“你有没有经历过这样的’崩溃时刻’:你正在写一个功能,突然老板让你马上处理另一个紧急需求,但你的工作还没提交,想切换分支又不想丢失当前工作?别担心,Git的stash就是你的’工作暂存柜’!”

🌟 为什么stash是Git的"工作暂存柜"?

想象一下,你正在一个繁忙的办公室工作,但突然有一个紧急会议要参加。你不想把当前的工作乱放,所以你把工作放在一个"暂存柜"里,等会议结束后再继续。Git的stash就是你的’工作暂存柜’,它让你可以暂时保存当前的工作状态,然后切换到其他任务,之后再恢复原来的工作。

重点:stash是Git的’工作暂存柜’,它允许你暂时保存当前的工作状态,以便切换到其他分支或任务

在GitCode上,stash是Git的内置功能,需要在本地Git客户端中使用,但可以在GitCode平台上正常工作。GitCode平台本身不提供stash管理界面,但支持通过Git命令进行stash操作。

🧠 核心知识点:stash的工作原理

Git stash的工作原理就像"工作暂存柜":

当前工作:
- 文件A: 修改中
- 文件B: 修改中
- 文件C: 修改中

使用stash后:
- 文件A: 保存到暂存柜
- 文件B: 保存到暂存柜
- 文件C: 保存到暂存柜

然后可以:
- 切换分支
- 修复bug
- 等等

之后恢复工作:
- 文件A: 从暂存柜取出
- 文件B: 从暂存柜取出
- 文件C: 从暂存柜取出

关键点

  1. stash可以保存当前工作状态
  2. stash可以保存工作区和暂存区的修改
  3. stash可以保存多个工作状态
  4. stash可以轻松恢复

小贴士:在GitCode上,stash是Git的本地功能,不需要额外配置。GitCode平台本身不提供stash功能,但支持通过命令行使用。

💻 AtomGit(GitCode)实操步骤

🛠 步骤1:创建测试项目

# 1. 创建项目
mkdir git-stash-demo && cd git-stash-demo
git init
echo "# Git Stash Demo" > README.md
git add README.md
git commit -m "Initial commit"

🛠 步骤2:添加工作并使用stash

# 1. 添加功能
echo "Feature 1" >> README.md
git add README.md

# 2. 保存工作状态
git stash

# 3. 查看stash列表
git stash list

# 4. 切换分支
git checkout -b feature-branch

🛠 步骤3:恢复工作状态

# 1. 返回主分支
git checkout main

# 2. 恢复工作状态
git stash pop

# 3. 验证恢复
cat README.md

🛠 步骤4:保存多个stash

# 1. 添加新功能
echo "Feature 2" >> README.md
git add README.md

# 2. 保存第二个stash
git stash

# 3. 查看stash列表
git stash list

# 4. 恢复特定stash
git stash apply stash@{1}

🌰 实战案例:在紧急任务中暂存工作

# 1. 创建项目
mkdir emergency-task-demo && cd emergency-task-demo
git init
echo "# Emergency Task Demo" > README.md
git add README.md
git commit -m "Initial commit"

# 2. 添加功能
echo "Feature 1" >> README.md
git add README.md

# 3. 暂存工作
git stash

# 4. 处理紧急任务
git checkout -b bug-fix
echo "Bug fix" >> README.md
git add README.md
git commit -m "Fix bug"

# 5. 返回主分支
git checkout main

# 6. 恢复工作
git stash pop

# 7. 继续工作
echo "Feature 1 continued" >> README.md
git add README.md
git commit -m "Continue feature 1"

❌ 常见问题避坑指南

🔴 问题1:stash无法保存工作

原因:在stash之前,没有添加修改到暂存区。

解决

  1. 在stash前,确保使用git add添加修改
  2. 使用git stash -u保存未跟踪的文件
  3. 使用git stash -a保存所有修改

🔴 问题2:在GitCode上无法看到stash

原因:stash是Git的本地功能,GitCode平台不直接显示stash。

解决

  1. stash是本地Git特性,需要在本地Git客户端中使用
  2. 在GitCode上,你只能看到提交历史,无法直接看到stash
  3. 要查看stash,需要在本地Git客户端中使用git stash list

🔴 问题3:stash被意外删除

原因:在使用git stash pop时,stash被自动删除。

解决

  1. 使用git stash apply代替git stash pop,这样stash不会被删除
  2. 使用git stash show stash@{n}查看stash内容
  3. 在操作前备份stash:git stash save "backup"

🔴 问题4:stash内容不一致

原因:在stash和恢复之间,有其他修改。

解决

  1. 在stash前,确保工作区干净
  2. 使用git stash -u保存未跟踪的文件
  3. 在恢复后,使用git diff检查差异
  4. 在恢复后,使用git addgit commit提交

💡 Stash管理的高级用法

📌 1. 保存未跟踪的文件

# 保存未跟踪的文件
git stash -u

📌 2. 保存所有修改

# 保存所有修改
git stash -a

📌 3. 查看stash内容

# 查看stash内容
git stash show stash@{0}

📌 4. 删除特定stash

# 删除特定stash
git stash drop stash@{0}

🎯 今日小结

项目 说明
stash是什么 Git的’工作暂存柜’,允许暂时保存当前的工作状态,以便切换到其他分支或任务
关键命令 git stashgit stash listgit stash popgit stash applygit stash dropgit stash -ugit stash -a
最佳实践 1. 在stash前确保工作区有修改 2. 使用git stash -u保存未跟踪的文件 3. 使用git stash apply代替git stash pop,避免stash被删除 4. 在操作前备份stash 5. 了解stash的工作原理
常见场景 1. 切换分支时保存工作 2. 处理紧急任务 3. 临时保存工作状态 4. 在多个任务之间切换 5. 保持工作区干净

📅 明日预告:Day 74:Git的高级技巧:使用Git的rebase重写提交历史

“明天我们将深入探讨如何使用Git的rebase重写提交历史,让你在需要整理历史时更加得心应手!”


✨ 今日金句:stash不是’工作的丢失’,而是’工作的暂存’。用好Git stash,让你的工作流程从’手忙脚乱’升级到’井井有条’!

Logo

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

更多推荐