我做了git rebase -i
,选择了一个提交进行编辑,git在该提交时停止。
我现在尝试使用git checkout -p stash
从藏匿 结帐一个补丁。
但这给了我奇怪的旧藏匿内容,而git stash show -p
给了我预期的补丁,我想从中结账。
这里发生了什么,如何从藏匿处查看我的大块头? 如果我要提供更多信息,请告诉我。
答案 0 :(得分:1)
为什么不在没有checkout
命令的情况下直接使用存储?
git stash pop
从隐藏列表中删除单个隐藏状态并将其应用于当前工作树状态
git stash apply
与pop类似,但不会从隐藏列表中删除状态
git stash show
将存储中记录的更改显示为存储状态与其原始父级之间的差异
在您的情况下,您需要使用stash@{<revision>}
来执行您希望执行的任何存储操作。
例如:
git stash show -p stash@{0}
# display on the stash content
git stash show stash@{1} -u
# checkout the desired commit and choose the right action you want
git checkout -p stash@{0} -p <path to file>
答案 1 :(得分:0)
首先,让我们查看git checkout
的文档。
git checkout [-p | --patch] [] [ - ] ...
当给出
<paths>
或--patch时,git checkout不会切换分支。它从索引文件或命名的<tree-ish>
(通常是提交)更新工作树中的命名路径。在这种情况下,-b和--track选项毫无意义,并且给出其中任何一个都会导致错误。在更新工作树之前,<tree-ish>
参数可用于指定特定的树(即提交,标记或树)以更新给定路径的索引。git checkout with
<paths>
或--patch用于从索引恢复其原始内容的修改或删除路径,或用名为<tree-ish>
的内容替换路径(通常是提交 - ISH)。
正如我们所看到的,-p
之后的args应该是一个特定的树(即提交,标记或树),并且你通过了stash
。那么,git如何处理stash
是关键点。
您可以尝试git checkout stash
查看哪个提交git会转到,这就是您实际checkout -p
。
最后,我认为您可以使用git stash apply
使其正常工作。