관리
← 文章列表

切换Git分支前的检查:管理尚未保存的修改

本文在AI辅助下由原文翻译而成。请结合原文核对专业术语和公式。

想查看另一分支,但还有修改文件时,应先整理什么内容保存在什么地方。编辑器尚未保存的句子、已写入磁盘但未提交的代码,以及新建未跟踪文件,保存方式不同。切换前读取状态,可减少忘记重要修改。

切换Git分支前的检查:管理尚未保存的修改 — 原创概念示意图
原创概念示意图

以下main与feature-note为说明用分支名,应改为读者仓库实际存在名称。本文命令并非自动在用户仓库执行的流程。以无子模块或进行中合并的简单仓库说明,实际错误应另读显示内容。

一览切换分支与恢复工作的顺序

说明用示意图——并非实际画面或测试结果。

1. 将编辑器内容保存至实际文件

2. 确认当前分支、跟踪与未跟踪修改

3. 保存所需范围并对照结果

4. 切换目标分支,确认实际状态

5. 在原工作位置应用并检查保存内容

1. 编辑器保存与Git提交是不同步骤

编辑器标签有未保存标记,内容可能仍与磁盘文件不同。用Git保存修改前,将要保留内容写入文件并确认实际路径。保存至其他名称文件或项目文件夹,即使读取当前仓库状态也可能找不到该内容。

写入磁盘不表示已包含在Git提交。Git区分工作目录、收集待提交修改的索引与提交历史。与其说“未保存代码”,明确编辑器未保存还是Git未提交,所需操作更清楚。

状态 检查哪里? 保管前操作
编辑器未保存 标签标记与实际文件路径 将需保留内容保存为文件
已修改跟踪文件 Git状态与差异 决定提交或暂存范围
新未跟踪文件 状态中新文件列表 决定是否包含在保存对象
被忽略文件 实际文件与忽略规则 必要时确认独立保存

虚构开发者只在编辑器修改笔记后创建Git stash,不能断定未保存句子已保管。重要内容应先让编辑器与磁盘一致,再关联Git观察范围。Git记录不替代编辑器全部临时状态。

2. 切换前读取当前分支与修改列表

git status --short --branch
git diff
git diff --cached

状态查看当前分支与修改文件,差异读取实际修改内容。一般非合并情形的简短状态,第一栏表示索引,第二栏表示工作目录。两个问号为未跟踪文件,默认状态列表可能不显示忽略文件。

虚构结果有notes.txt修改与new-plan.txt未跟踪标记时,决定两文件是否列入保存计划。只看跟踪文件差异,可能遗漏新文件,因此也看状态列表。读取new-plan.txt实际内容,区分是否为必要工作资料。

也宜记录当前分支名与返回位置。两分支名相似,可能在错误位置开始恢复。实际名称关联保存记录,比模糊记忆“返回旧分支”更便于切换后判断。

3. 选择提交修改与临时保存修改

有意义且完成的工作,可按项目惯例提交。仍进行中,可考虑用stash暂时保存。两选择按完成程度与返回计划决定,不为切换就将不必要文件也一起提交。

虚构notes.txt与new-plan.txt仍在编写时,应明确临时保存哪些文件。阅读旧代码部分修改与新文档是否同一任务组,为保存记录命名。以后多个临时记录,有说明才能更易选所需项。

重要资料未被Git跟踪时,需另确认保存条件。临时保存是当前仓库再次应用的操作手段,不自动保证外部备份或全部编辑状态保存。关键是不要遗漏新文件与忽略文件。

4. 包含未跟踪文件的临时保存示例

git stash push -u -m "before-switch-demo"
git stash list
git stash show -p -u 'stash@{0}'
git status --short --branch

上述示例指定-u,包含新未跟踪文件。Git官方文档区分stash保存工作目录和索引、-u包含未跟踪文件、-a包含忽略文件。这里默认示例不含-a,因此不能认为忽略文件也已保存。

stash命令后,读取列表与差异,确认实际创建什么记录。stash@{0}表示当时最新项,若又创建保存记录,就应重新选择所需项。PowerShell中含大括号引用,可如示例加引号传入命令。

也重新读取当前状态,因为可能还有未保存文件或其他修改。虚构忽略的local-output文件夹很重要时,不能仅凭-u保存结果就记录其内容已保留。确认剩余内容,用适当独立方法保存所需文件。

切换Git分支前的检查:管理尚未保存的修改 — 展示文章要点的原创示意图
展示文章要点的原创示意图

5. 切换被拒绝时,先检查剩余修改

git switch main
git status --short --branch

示例假设main实际存在,且要查看该分支。Git官方文档说明,切换并非总需干净工作目录,但可能丢失本地修改的切换默认会中止。不能说有未提交修改就一定失败,或一切换就全部消失。

出现拒绝文字,应读取相应文件与剩余修改,重新确认保存范围。进行中合并或冲突等其他条件也应独立处理。为消除错误直接加丢弃修改选项,可能与保留工作及切换目的不符。

切换成功时,确认实际当前分支。输入命令与已切换结果应分别读取。修改仍在时,确认内容并决定是否是新分支要处理的工作。出现意外文件,下一编辑前与原记录对照。

6. 在原分支重新应用保存内容

git switch feature-note
git stash list
git stash apply 'stash@{0}'
git status --short --branch

此顺序为返回feature-note,应用列表确认记录的说明示例。实际需阅读所需项说明和内容,选择引用。总像示例用最新项,可能应用其他工作保存内容,因此对照名称与时点。

官方文档区分apply保留列表项,pop关联应用与移除列表。可能发生冲突,不能自动假设应用成功。本示例用apply,保留原临时记录再读取结果。

若目的也包括恢复已加入索引的状态,需另确认。阅读官方文档中默认apply与恢复索引选项差异,按实际项目选择。文件内容已返回,与提交准备状态也相同,不记录为同一结果。

7. 冲突或文件缺失时的检查

应用冲突时,确认当前分支与保存修改是否重叠。比较原工作与新分支变更,决定保留内容。状态不明就重复应用同项,可能更复杂,因此先读取已产生结果。

新文件未回来时,确认原保存范围是否包含,以及所选stash是否正确。也对照是否只在编辑器编写,或属于忽略规则。不要将全部原因归为“stash删了”,而应关联保存前记录与实际列表。

恢复后确认 依据
是否原工作分支? 当前分支显示
所需文件是否回来? 文件列表与实际内容
新文件是否也存在? 未跟踪文件与保存差异
是否还有冲突? 状态与相应文件内容
临时记录是否保持? stash列表

8. 恢复工作时保留简短记录

虚构工作备注可为“保存feature-note文档修改和新计划文件、查看main、返回原分支、应用指定项、对照文件内容”。记录用于留下执行顺序,并非添加实际未确认的恢复成功。

整理保存项前,确认必要内容已返回与冲突已解决。清理列表是移除原临时记录的选择,应在检查工作后判断。本文不提供批量删除命令,也不假设读者全部保存项都不需要。

切换前保存编辑器内容、读取状态与确认保存范围;切换后确认实际分支与恢复内容。留下每步依据,短暂切换也成为不丢失进行中修改、继续工作的流程。图片是自行制作的说明图。

官方来源与撰写标准

资料确认日期:2026-10-07。这是AI依据实际打开的官方资料撰写的说明。单独标注的计算、代码与检查案例用于说明,并非直接测试用户环境或实测结果。发布时重新确认功能与资料是否改变。

为帮助理解本文而制作的原创插画。

Tistory 原文 ↗