You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git:如何创建无需提交的可恢复文件快照?Git stash不适用

Git轻量状态快照方案(无需分支/提交)

以下几种方案可以实现类似本地文件备份的轻量Git状态快照,完全满足你的需求:

方案一:git stash create + git stash store(推荐)

这个组合能创建不影响当前工作区的stash快照,完美解决普通stash的两个问题:

保存快照

# 创建一个stash对象(仅保存状态,不修改工作区),返回其哈希值
STASH_HASH=$(git stash create)
# 可选:给快照添加备注,方便后续通过`git stash list`查看识别
git stash store -m "backup before big tests" $STASH_HASH

执行后工作区文件完全保持原样,不会像git stash push那样重置文件。

恢复快照

# 从最近的stash快照恢复指定文件,强制覆盖当前版本
git restore --source=stash@{0} myfile

# 若记得快照哈希值,也可直接用哈希值恢复
git restore --source=$STASH_HASH myfile

该操作会直接将文件替换为快照状态,不会触发合并操作。

方案二:git archive 导出文件快照

这个方式更接近你手动cp的逻辑,直接生成文件的备份归档:

保存快照

# 导出当前工作区中`myfile`的状态到备份文件
git archive -o myfile-backup-before-big-tests HEAD:./ myfile

恢复快照

# 从归档文件中提取并覆盖当前的`myfile`
git archive --extract --file=myfile-backup-before-big-tests myfile

方案三:直接本地备份(兼容Git)

若更习惯手动备份逻辑,可直接复制文件,针对Git追踪的文件,建议结合git ls-files确保备份的是Git管理的版本:

# 保存快照
cp $(git ls-files myfile) myfile-backup-before-big-tests

# 恢复快照
cp myfile-backup-before-big-tests $(git ls-files myfile)

内容的提问来源于stack exchange,提问作者tobiasBora

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 23:37:41