2012-01-06 96 views
14

我有2個遠程分支機構:如何強制刪除GitHub中的遠程分支?

- pending-issues-in-project 
- new-issues-in-project 

我試圖刪除pending-issues-in-project這樣的:
git push origin :pending-issues-in-project,但我得到了錯誤:

error: unable to push to unqualified destination: pending-issues-in-project 
The destination refspec neither matches an existing ref on the remote nor 
begins with refs/, and we are unable to guess a prefix based on the source ref. 
error: failed to push some refs to '[email protected]:forkedRepo/RepoName.git' 

,所以我想可能是我已經刪除了pending-issues-in-project分支,但是當我運行
git branch -a它顯示pending-issues-in-project分支在列表中。
當我嘗試相同(嘗試刪除)new-issues-in-project,它的工作。
我已經使用git branch -D branchName從本地服務器中刪除了兩個分支。

如果錯誤發生是因爲分支不在存儲庫中,那麼 爲什麼它進入遠程分支列表?

有沒有辦法強制刪除遠程分支?

謝謝你的時間。

+0

'git branch -r'給你什麼? – 2012-01-06 06:28:37

+0

其給出的分支列表也具有起源/待定問題在項目中,我試圖刪除。 – 2012-01-06 06:34:39

回答

19

你要做的:

git remote prune origin 

清除在本地的Git倉庫遠程跟蹤分支(刪節刪除不遠程起源存在了任何分支)。之後,你不會看到它下面git branch -a

7

你看到的分支是所謂的遠程[追蹤]分支。它位於您的本地存儲庫中,它代表您在遠程存儲庫中看到該分支的最後一個位置。 Git使用這樣的分支,以便每次處理時都不必與遠程存儲庫通信;你只需更新/獲取一次,遠程機架分支就會更新,而且你可以從中進行工作。在你的情況下,遠程倉庫中的分支已經被刪除很久了;您只需要刪除本地存儲庫中的副本。

有刪除它主要有兩種方式:

  • git branch -d -r origin/pending-issues-in-project刪除只是一個分支;和
  • git remote prune origin刪除所有這些過時的遠程分支。您也可以同時更新:git remote update --prune origin
0

原諒我笨拙的英語。我希望你能理解我的答案。

  1. 該命令git push origin :pending-issues-in-project可能是錯誤的。也許你的意思是:git push origin pending-issues-in-project。它推動了一個分支到github。

  2. 如果錯誤是由於分支不存在於存儲庫中,那麼爲什麼它來到遠程分支列表? 由於git是一個分佈式版本控制系統,github的服務器有一個數據庫來存儲.git repo和你推送給它的數據。所以,如果你使用命令:git branch -de branchName,它只是刪除本地分支,它不會干擾github的.git和你推送給它的數據。

  3. 有沒有辦法強制刪除遠程分支? 是的,這是可能的。命令是:

    git push origin --delete <branchName> 
    
  4. 如果您想了解更多關於Git版本控制系統的發佈功能,你會發現這個鏈接有用:git's distributed feature

    如果你想知道更多關於通過git刪除github上的分支,你可以閱讀關於它here

+0

你到底在問什麼?我很抱歉,但即使在我編輯了你的帖子後,我仍然難以理解。 – Quillion 2013-09-18 15:50:44