第 10 章 储藏室和回流日志
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
在您的日常开发周期中,不断出现的干扰、修复错误的要求以及来自同事或经理的请求都堆积如山,干扰了您正在努力完成的真正工作,您是否曾感到不知所措?如果有,"储藏室 "就是用来帮助你的!
在本章中,你将了解储藏库的工作原理以及如何查看储藏库上下文。之后,你将了解记录 Git 仓库本地提交的 reflog。当你需要暂时搁置当前工作以处理其他事情时,这些功能将帮助你充分利用 Git 提供的选项。
藏匿处
储藏库是一种机制,用于捕获 正在进行的工作,以便保存起来,在更方便的时候再返回。当然,你已经可以通过 Git 现有的分支和提交机制做到这一点,但储藏库可以让你通过一条简单的命令快速捕获整个索引和工作目录,让你的仓库干净、整洁,并为另一个开发方向做好准备。另一条命令就能恢复索引和工作目录,让你继续你的工作。
让我们通过一些用例来了解一下储藏库是如何工作的。
使用案例:工作流程中断
在这种情况下,你正在 Git 仓库 中愉快地工作,已经修改了几个文件,也许还在索引中暂存了几个。然后您被打断了。也许是发现了一个重要的 bug,要求您立即修复。也许是您的团队领导突然把一项新功能放在了首位,并坚持要您放弃一切工作去完成它。
无论在什么情况下,你都会意识到,你必须存储正在进行的工作,清理你的石板和工作树,然后重新开始。这是git stash 的绝佳机会:
$ cd the-git-project
# edit a lot, in the middle of something
# High-Priority Workflow Interrupt!
# Must drop everything and do something else now!
$ git stash push
Saved working directory and index state WIP on main: 1En0v80 ...
# edit high-priority change
# add and commit the changes
# continue with stashed work in progress
$ git stash pop
继续你的工作!
push 是git stash 命令的默认选项,因此在指定储藏库时可以不使用该选项。Git 也会在保存储藏库时提供默认的日志信息,但你也可以提供自己的信息,例如,更好地提醒你正在处理什么:
$ git stash -m "WIP: Doing real work on my stuff"
缩写 WIP是 "进行中的工作 "的常用缩写。
要使用其他更基本的 Git 命令达到同样的效果,需要手动创建一个新的分支,在该分支上提交所有修改,然后重建之前的分支继续工作,之后再在新的工作目录上恢复保存的分支状态。对于好奇的人来说,这个过程大致遵循以下顺序:
# ... normal development process interrupted ...
# Create new branch on which current state is stored.
$ git checkout -b saved_state
# Store work in progress
$ git add files
$ git commit -m "Saved state" # Back to previous ...Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access