2017-03-16 140 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應用二進制差異。