我对git很新。在我跑的一台电脑上
git stash save myfeature
git stash show -p > myfeaturepatch
我将myfeaturepatch
复制到另一台计算机并运行
git apply myfeaturepatch
我做了一些更改,包括添加一些字体文件(二进制文件),然后运行
git stash save myfeature2
git stash show -p > myfeaturepatch2
当我尝试将第二个版本应用到我的第一台计算机时,我得到了
error: cannot apply binary patch to 'myfont.ttf' without full index line
我的猜测是,当我藏匿时,我需要运行git stash save --binary myfeature2
。不幸的是,由于git stash
删除了保存到文件的更改,并且由于上述错误我无法将修补程序应用于任何一台计算机,因此我目前无法访问所做的更改。
我已经尝试了一系列不同的git apply
和git stash
命令,但我对已经发生的事情以及参数的含义没有足够的理解。我的补丁文件中的二进制文件。我认为有办法做到这一点。
答案 0 :(得分:2)
我的猜测是,当我藏匿时,我需要运行
git stash save --binary myfeature2
。
不,这是不必要的......无论如何都不是一个选项:没有save --binary
。
git stash
做的是提交您的工作。它只是以一种奇怪的方式执行此操作,使用 no 分支上的两个单独的提交 1 。
只要你还有藏匿,你仍然有提交。
处理您仍然拥有的存储的最简单方法是将其转换为新分支上的普通提交:
git stash branch newbranchname [<stash>]
当然,这需要你在 藏匿的机器上执行它, 2 但是一旦完成,你就在一个新的分支上,索引是运行git stash save
时的工作方式,以及运行git stash save
时工作树的方式。 (新分支的当前提交也是当您运行git stash save
时当前的提交。)您现在可以完成git add
任何未分段的文件,git reset
您不想要暂存的任何文件,以及git commit
生成的索引(然后从更多工作树文件中提交更多提交,直到所有内容安全地保存在普通的非存储中提交)。
1 这两个提交用于当前的索引和工作树。请记住,索引是您构建下一个提交的位置,通过git add
- 和/或git rm
来复制工作树中的最新版本。因此,索引和工作树中的任何一个或两者都可以与当前的提交不同,因此git stash save
可以单独保存两者,以便以后可以单独还原它们,如果您需要后来。您可以告诉它保存包含未跟踪文件或所有文件的第三个提交。
2 当然,在你git stash branch
之前,你应该有一个干净的索引和工作树。如果不这样做,则需要先提交或存储。如果你决定再次藏匿,这会推动你之前的藏匿行为&#34; up&#34;一级,所以如果它曾经是stash@{2}
,现在是stash@{3}
。我发现保持许多活动状态是疯狂的一个因素:相反,提交一个新的分支。
答案 1 :(得分:0)