Git Stash失败了

时间:2015-02-17 03:28:48

标签: git git-stash smartgit

我在Windows中使用SmartGit。今天我需要做几次提交的硬重置。 SmartGit自动为我修改了我修改过的文件。

重置后,它尝试应用存储:

$ git.exe stash apply --index stash@{0}

但它给了我:

Apply Stash: stash failed (return code 1)

我可以查看存储内容并查看我的所有代码,但我无法应用存储。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:4)

git stash pop。它将为您提供工作树中的隐藏更改。 (pop考虑您需要stash@{0}

希望它有所帮助!

答案 1 :(得分:2)

您可以将其导出到补丁,然后尝试手动应用吗?

git stash show -p > my_stash.patch

答案 2 :(得分:2)

你可以做几件事:

  1. git apply --index尝试保留您正在申请的存储的暂存与未暂停设置。通常情况下这太难了#34;但是应用而不是 --index,允许所有更改变为非分级,是可能的。如果你不需要保持分离,那可能只是工作"。

  2. 作为acanby suggested,您可以将存储空间转换为补丁。请注意,git stash show仅显示存储的未暂停部分,因此这有点像不使用--index

  3. 如果所有其他方法都失败了,您可以将已保存的藏匿处转换为自己的(新)分支。这将恢复您reset的所有提交 - 远离,但仅在该新分支上。实质上, 1 git stash branch newbranch所做的是:

    • 将存储中保存的索引转换为普通提交
    • 当您执行HEAD步骤(其父级是同一个旧父级等)时,其父级是活动的提交(是git stash save提交);
    • 制作分支 newbranch 的索引提交提示,这是一个新创建的分支;和
    • 保留工作树和(如果保存为存储的一部分)未跟踪/所有文件,您可以在现有的新分支上提交。

  4. 1 真的"事实"超过"本质":这就是git stash branch的工作原理,因为它保留了stash-bagi提交,并使一个新的分支名称指向它