2016-07-14 968 views
2

我有一個問題,當我嘗試推我的本地提交,它可能發生在Android Studio已經粉碎。以下是錯誤:Git錯誤時推 - update_ref失敗

update_ref failed for ref 'refs/remotes/origin/master': cannot lock ref 'refs/remotes/origin/master': unable to resolve reference refs/remotes/origin/master: Invalid argument

$git stashHEAD現在是我的最新承諾。

我仍然是git的初學者,我不知道如何解決它..我該怎麼辦?

回答

2

您的refs/remotes/origin目錄 - 這是您的本地存儲庫中的一個目錄 - 有某種問題。 (我不清楚究竟發生了什麼錯誤,但是你猜測它發生在Android Studio崩潰時似乎也可能發生。)

要修復它,可以使用或許使用使用下面的命令序列。請注意,我不推薦使用它 - 您的Git服務無論是Android Studio還是普通的命令行Git都不應該崩潰並且給您留下一個損壞的存儲庫,所以您應該永遠不要使用來做到這一點,它只是一個緊急修復,像把膠帶都在你的車後樹上掉下來就可以了,就足以讓你到一個適當的維修/更換車輛後:

$ cd $(git rev-parse --show-toplevel) # if necessary 
$ rm -rf .git/refs/remotes/origin  # remove all origin/* 
$ mkdir .git/refs/remotes/origin  # create empty origin/ 
$ git fetch origin      # repopulate origin/* 

在任何情況下,它很可能你的git push在這一點上確實成功了,因爲失敗的是對你的origin/master遠程追蹤分支的更新。

你的Git剛說完另一混帳上origin,給他們更新(的origin用戶)爲他們的master,並origin接受這些更新,你的Git是現在記錄的事實是,它最後一次與origin,交談,他們的master被設置爲某個特定的提交散列 - 您剛剛推送的散列。

(請記住,你origin/*遠程跟蹤分支只是記錄,對你來說,你的Git看到什麼他們 Git有它的分支機構。您的Git更新這些當您運行git fetch,在您的Git會談到他們的Git並得到其所有分支機構。您的Git還更新了一些,不是全部的git push,當你的Git會談到他們的Git,並要求他們設置一個或多個分支機構,爲您的Git遞給她們的哈希值。)


Excep作爲一名Git機械師,我的推薦部件實際上是適當的車身面板,皮帶和軟管,以及夾具,而不僅僅是膠帶,打包線和口香糖。 :-)

+0

工程就像一個魅力,非常感謝你! – Pawel

0

要提交到您的在線回購,您需要這樣做:$ git push origin branch_name。要知道你的分支名字只需要做一個$ git status,它就會顯示出來(在git bash中它是用藍色着色的)。你的問題可能來自不同的來源。基本上,git告訴你它不能理解你作爲參數傳遞的內容。你確定你在你的倉庫嗎?

+0

錯誤,我得到的顯示出來,當我試圖把檢查懸掛的斑點。我在分支大師。是的,我確定我在我的存儲庫中,因爲我可以看到我在Android Studio中進行的更改,例如,當我添加一個可繪製的,我也可以看到我的最新提交隱藏,這裏是消息: 「保存的工作目錄和索引狀態WIP上的主:a5fa9f4浮動行動酒吧和夜間主題添加 HEAD現在在a5fa9f4 Floating Action酒吧和夜景主題增加了「 任何想法? – Pawel

+0

@Pawel所以你使用這個確切的命令:git push origin master,它出錯了嗎? – limbo

0

除了在接受的答案中提到的步驟之外,我還必須使用下面的垃圾回收器命令來刪除懸掛提交blob。

 git gc --prune="0 days" 

您可以通過運行

git fsck