2016-01-20 74 views
0

我只想詢問我所做的以及是否有更好的方法來處理此問題。當git由於權限不足而突然停止時,我正在做一個「git pull」。git錯誤:以下未跟蹤的工作樹文件將被結賬覆蓋

某些新文件已從遠程服務器複製。但是,當我繼續做另一個「git pull」時,它表示以下工作樹文件將被覆蓋並存儲或提交更改。我搜索並找到了一個隱藏文件的提示,但是另一個權限錯誤(「無法取消鏈接文件」)出現在存儲文件的時候。

這讓我完成了git pull,但是我的一些局部變化現在已經存在了。當我想運行「git stash apply」時,它給了我關於未跟蹤的工作樹文件的相同錯誤將被覆蓋。

最後,在我能夠應用git存儲之前,我必須移動這些文件。

回答

1

你問是否有更好的方法來處理你的情況,我相信有。但是,它可能不會完全解決您遇到的權限問題。

我建議不要使用git pull命令。 pull實際上是fetch後跟merge,但您無法控制此過程。首先運行get fetch --all,您將收到所有遙控器的所有新提交。一旦這些更改被提取,您可以手動合併它們。這具有不移動您的HEAD指針(即不更改文件系統中的文件)的優點。因此,您應該能夠在沒有任何操作系統權限問題的情況下獲得其他開發人員所做的更改。

對於我來說,這個過程通常類似於

$ git fetch --all 
remote: Counting objects: 250, done. 
remote: Compressing objects: 100% (69/69), done. 
remote: Total 250 (delta 103), reused 76 (delta 76), pack-reused 88 
Receiving objects: 100% (250/250), 64.16 KiB | 0 bytes/s, done. 
Resolving deltas: 100% (116/116), completed with 37 local objects. 
From github.com:org/repo 
    9b49e78..14dc510 master  -> upstream/master 

$ git rebase upstream/master mybranch 

rebase在這種情況下使用merge,而不是適用於由其他開發者,你只是fetch版所做的最新更改頂部更改。如果沒有rebase,您將被迫做出額外的承諾,將您的更改與其他人所做的更改合併。這是許可問題可能出現的地方,因爲rebase正在改變您的HEAD指向每個修改的提交的位置。

我希望這有助於!

+0

如果我使用rebase,是否會丟失我所做的不在遠程存儲庫中的任何本地更改? – SVAN

+0

如果您有未提交的更改,「rebase」將會失敗,告訴您有未提交的更改。如果所有本地更改都已提交,並且'mybranch'指向您的最新提交(即,當您進行最新提交時您位於'mybranch'),則不會丟失它。 「rebase」的目的是在「upstream/master」的變化之上移動你的本地變更。最終的結果就好像你在其他人將變更推送到「上游」之後開始了你的變更。 –

相關問題