2017-03-16 100 views
1

拉非二进制文件,我是很新,饭桶。在一台计算机我跑从混帐藏匿

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 applygit stash的命令,但我没有什么事情,什么参数的意思是从我的补丁文件拉出只是非二进制文件的完整足够的了解。我认为有一种方法可以做到这一点。

回答

2

我的猜测是,我需要运行git stash save --binary myfeature2时,我的藏匿处。

没有,这是不必要的......甚至不是一种选择呢:没有save --binary

什么git stash确实是承诺你的工作。它只是这一个奇怪的方式,使用两个不同的提交,是在没有分支。

只要你仍然有藏匿,你还有的提交。

对付藏匿大家还是最简单的方法,这需要采摘之余,是将其转换为普通提交一个新的分支:

git stash branch newbranchname [<stash>] 

当然,这需要你这样做该机器藏匿,但一旦做了,你是在一个新的分支,指数当您运行git stash save它的方式,和工作树当您运行git stash save它的方式。 (新分支的当前提交的提交,这是当前当您运行git stash save,也是如此。)你现在可以完成git add -ing任何未分级的文件,你不希望上演git reset任何文件,并git commit最终得到的指数(然后从更多的工作树文件中提交更多的提交,直到所有内容都安全地保存在普通的非隐藏提交中)。


这两个提交是当前指数和工作树。请记住,索引是您要构建下一次提交的地方,通过git add -ing和/或git rm-从工作树中复制最新版本。索引和工作树中的任何一个或两者因此可以与当前的提交不同,所以git stash save分别保存两个,以便稍后可以单独恢复它们。您可以告诉它保存包含未跟踪文件或所有文件的第三次提交。

当然,在你git stash branch之前,你应该有一个干净的索引和工作树。如果你不这样做,你需要首先提交或隐藏。如果你决定再次藏起来,这会将你以前的藏匿处推高一级,所以如果它曾经是[email protected]{2}现在是[email protected]{3}。我发现保持活跃的许多窗口是疯狂的秘诀:相反,提交一个新的分支。

0

至少尝试(git apply):

git apply --reject mypatch.diff 

这个选项使得其应用了适用补丁的部分,并保留拒绝帅哥相应*.rej文件。

当你打个补丁(git diff),添加--binary选项:

输出可与git-apply应用二进制差异。