2013-03-01 80 views
1

我很確定這個問題之前已經被問過,但我似乎沒有找到它。很抱歉,如果它是一個dublicate。Git裸存儲庫有主分支簽出?

我有一個純倉庫可以稱之爲project_x.git,如果我們檢查的配置文件,它說

[core] 
repositoryformatversion = 0 
filemode = false 
bare = true 
symlinks = false 
ignorecase = true 
hideDotFiles = dotGitOnly 

所以裸肯定正確的,裸=真。現在我試圖用清理版本替換主。

$ git push origin :master 
remote: Updating references: 100% (1/1) 
To http://gitrepo.local/git/project_x.git 
! [remote rejected] master (branch is currently checked out) 
error: failed to push some refs to 'http://gitrepo.local/git/project_x.git' 

我使用gitblit順便說一句,這不是實際的服務器url。

這個迴應讓我感到困惑,我該如何在裸露的回購庫上安裝結帳分支?誰在那個分支上工作:),沒有任何意義。要麼它不是裸露的一些配置明智或gitblit如何搞亂我。我不明白?

出了什麼問題?如果我嘗試

git push -f , 

編輯

順便說一句相同的消息:這個作品,但你不能刪除分支,因爲我做過這樣的嘗試。

感謝

回答

5

有一個頭裸回購,這實際上指向,當你不帶參數運行git clone <url>這是簽出分支設置。

據我所知,你不能刪除遠程HEAD分支,所以如果你想刪除主人,你必須推第二個分支,將HEAD移動到該分支,然後推動主分支中的空分支:

本地:

git branch mybranch 
git push origin mybranch 

在裸回購:

git symbolic-ref HEAD refs/heads/mybranch 

本地:

git push origin :master 

當然,如果需要,您可以再推另一個分支,如果需要,請將其移回master

git push origin newbranch:master 
git symbolic-ref HEAD refs/heads/master #(on bare repo) 
+0

很好的解釋,我從來沒有做我的遠程服務器上這樣的暴力行爲,但行家釋放clottering下來與Maven釋放犯,互動變基試圖改寫歷史,當我discovred這個問題之後。無論如何,我回來了,感謝你。 – user1043825 2013-03-01 13:01:43

0

看起來像你的本地存儲庫是/正在跟蹤遠程原點/主分支。你有本地主人簽出。

git push origin :master 

...表示您正在刪除遠程跟蹤分支,但當您在本地簽出相同檢查時會失敗。我想你必須有另一個本地分支簽出才能刪除遠程分支。

如果你想與遠程裸倉庫「從頭再來」,我只想做(在遠程回購)的新

git init --bare 

...然後把你的本地師傅說,和然後將其設置爲上游。

git push origin master -u 
+0

事實上,當我從遠程獲得這種拒絕時,我正在清理分支上。我知道裸指令是如何在第一時間創建我的裸回購。我想你可以刪除遠程,即使你在本地跟蹤分支...我會嘗試並讓你知道。謝謝 – user1043825 2013-03-01 13:06:45