如何合并中断stash操作后分散在stash@{0}与待提交区的文件?
解决Git暂存区与Stash内容合并问题
方案一:将暂存区内容合并到现有Stash
这种方法无需额外备份文件,直接通过Git命令完成合并:
- 先把暂存区的内容提交为一个临时提交(提交信息随便写,后续会丢弃)
git commit -m "temp-commit" - 应用原来的Stash记录(stash@{0})到当前分支,自动合并修改(如果无冲突)
git stash apply - 将所有修改(包括Stash和原暂存区的内容)添加到暂存区,合并到刚才的临时提交中
git add .git commit --amend --no-edit - 把这个包含全部修改的临时提交转换为新的Stash,同时撤销临时提交
git reset HEAD~1git stash push -m "merged-stash" - 删除原来的旧Stash记录
git stash drop stash@{1}
方案二:临时目录备份法
如果觉得命令行操作复杂,用备份文件的方式更直观:
- 创建一个临时目录(建议放在项目目录外),把暂存区的所有文件完整复制过去(保留目录结构)
git diff --name-only --cached | xargs cp --parents -t /path/to/your/temp-folder - 清空当前暂存区
git reset - 删除原来的Stash记录(此时暂存区已空,不会被拒绝)
git stash drop - 从临时目录把文件复制回项目原位置
cp -r /path/to/your/temp-folder/* ./ - 现在所有修改都在工作区,重新创建一个包含全部内容的Stash
git stash push -m "merged-stash"
注意:如果合并过程中出现冲突,需要手动解决冲突后再继续后续步骤。Git Extensions用户可以直接在工具内打开Git命令行执行上述命令。
内容的提问来源于stack exchange,提问作者Dominique
相关产品推荐
相关产品推荐

