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

如何将工作区文件与stash文件合并?

如何将工作区文件与stash文件合并?

看起来你现在的情况是:在提交5014fdd之后存了一个stash(就是哈希为a8f1171的那个),之后又在工作区的同一个文件做了临时测试修改,想要把这两处的改动合并到一起对吧?先给你还原下你的Git提交结构,方便对齐场景:

*   a8f1171 - (refs/stash) On branch: my stash file
|\
| * 765e476 - index on branch: previous branch commit
|/
* 5014fdd - (HEAD -> branch) previous branch commit

下面给你几个实用的方案,你可以根据自己的需求选:

  • 直接合并法(简单直接,适合能快速解决冲突的场景)
    直接运行 git stash apply a8f1171——这里用哈希值指定stash比用stash@{0}更可靠,毕竟新存stash会打乱序号。Git会自动尝试把stash里的改动合并到当前工作区,如果同一个文件出现冲突,Git会在文件里用<<<<<<<、=======、>>>>>>>标记出冲突块,你只需要手动编辑文件,保留需要的代码、删除冲突标记,之后用git add <冲突文件名>标记冲突已解决即可。
    如果之后不需要保留原来的stash,可以换成git stash pop a8f1171,它会在应用stash后自动删除该记录。

  • 临时分支合并法(更安全,适合怕搞乱当前工作区的情况)

    1. 先把当前工作区的临时改动存成新stash,避免丢失:git stash push -m "temp_workspace_changes"
    2. 基于当前branch分支创建临时分支:git checkout -b temp_merge_branch
    3. 应用原来的目标stash:git stash apply a8f1171
    4. 再应用刚才存的工作区改动stash:git stash apply stash@{0}
    5. 处理可能出现的冲突,解决后用git add标记,之后你可以把临时分支的改动合并回原branch分支,或者直接在这个临时分支上继续工作,完成后删除临时分支就行。
  • stash分支合并法(适合想保留合并过程记录的场景)

    1. 先暂存当前工作区的改动:git stash push -m "workspace_temp"
    2. 从目标stash创建新分支,Git会自动把stash的改动应用到这个分支上:git stash branch merge_stash_branch a8f1171
    3. 回到原分支,应用刚才存的工作区改动stash:git checkout branch,然后git stash apply stash@{0}
    4. 或者你也可以直接在merge_stash_branch分支上应用工作区改动stash,处理冲突后将这个分支合并回原分支,这样整个合并过程会有清晰的提交记录可追溯。

备注:内容来源于stack exchange,提问作者laudai

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 18:33:03