如何在git中结合多个stash
这是过去两周在分支frontend一条pipe道。 
  |  Stash@{3}是自从Stash@{1}以来的所有代码(不包括两个微小的提交) 
  | 微小的承诺 
  | 微小的承诺 
  | 两周前巨额大宗交易,现在重新设置并转移至Stash@{1} 
 我的工作树目前是干净的。 
  Stash@{1}是两星期前通用开发代码批量提交的内容(这应该已经隐藏在第一位)。 这个提交被撤消,并被转移到存储。 
  Stash@{3}是Stash@{1} (减去一些已经提交的更改)后的最新工作。 
我需要在工作树中将这两个组合在一起,这样我可以从这个巨大的工作池中进行一些提交。
 我运行git stash apply stash@{1}然后我试过了: 
 git stash apply stash@{3} 
 git stash show -p | git stash apply stash@{3} 
 但是在这两种情况下我都得到了“肮脏的工作树”。 我怎样才能合并这项工作? 因为stash@{3}更新,所以我希望它在存在冲突的地方取代stash@{1} 。 
 如果在工作树中与修改过的文件没有冲突,那么只能应用一个存储,所以首先确保git status没有修改过的文件,如果存在,提交它们。 然后做: 
 git stash apply stash@{1} git commit -a # Enter your commit message git stash apply stash@{3} 
然后你可以做一个新的提交,或者修改前一个来合并它们。 每次申请后,您可能需要解决合并冲突。
 另外,如果你决定使用git stash pop而不是apply ,请注意,自从第一个popup后, stash@{3}将变成stash@{2} 。 
这有点牵扯,但这几乎总是有效的:
- 
stream行第一藏匿 $ git stash pop
- 
暂时从第一个存储提交更改 $ git add . && git commit -am 'WIP'
- 
stream行第二藏匿 $ git stash pop
- 
撤销临时提交,保留引入的更改 $ git reset --soft HEAD^
 更好的方法是使用git stash show -p stash@{whatever} > stash-{whatever}.diff ,然后使用git apply每一个。 
我有一个类似的问题,并解决这个问题。
 使用git stash pop来应用其中一个git stash pop 。 然后用git diff -p > ../stash.diff创build一个这样的补丁。 然后,您可以重置您的工作树(或再次存储更改),并用git stash pop stash@{1}popup另一个stash。 如果你现在使用你的补丁,你可以“合并”两个不同的窗口。 
你可能会有一些冲突要解决。 如果一切顺利,您可以放下隐藏的更改。