git - 如何在 git 中组合多个存储

标签 git git-stash

这是过去两周在分支 frontend 上的管道。

| Stash@{3} 是自 Stash@{1} 以来的所有代码(不包括两个微小的提交)
|微小的提交
|微小的提交
|两周前大量提交,现在重新定位并移至 Stash@{1}

我的工作树目前是干净的。
Stash@{1} 是两周前一般开发代码的批量提交的内容(这应该首先被 stash 起来)。此提交已撤消并移至存储区。
Stash@{3} 是自 Stash@{1} 以来对该树的最新工作(减去一些已提交的更改)。

我需要在我的工作树中将这两个存储组合在一起,这样我就可以从这个巨大的工作池中进行大量提交。

我运行了 git stash apply stash@{1} 然后我尝试了:

git stash apply stash@{3}
git stash show -p | git stash 应用 stash@{3}

但在这两种情况下我都得到了“脏工作树”。我怎样才能将这项工作 merge 在一起?因为 stash@{3} 较新,所以我希望它在有冲突的地方取代 stash@{1}

最佳答案

有点复杂,但这几乎总是有效:

  1. pop 第一个 stash

    $ git stash pop
    
  2. 暂时提交第一个存储的更改

    $ git add . && git commit -am 'WIP'
    
  3. pop 第二个存储

    $ git stash pop
    
  4. 撤消临时提交,保留它引入的更改

    $ git reset --soft HEAD^
    

关于git - 如何在 git 中组合多个存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9143865/

相关文章:

git stash 和 pop 显示文件不再标记为已移动?

带有两个命令的 Git 别名(stash pop + merge)只执行第一个命令。为什么?如何执行 merge ?

git - 如何将提交从master转移到另一个分支?

linux - GitLab : You are not allowed to access master! 将 gitlab 移动到另一台服务器后

git - 如何使用 Git?

git - 你如何将 “update” 藏起来?

git - 如何查看 "git stash -u"的未跟踪文件

git - 如何在 git 中维护一组分支的浅克隆

git - 使用 REST API 设置默认分支

git - git stash save 和 git stash push 有什么区别?