2012-01-27 96 views
5

我創建了一個分支,對它進行了處理,將其與基本分支合併,現在想刪除它。該分支也是在git遠程服務器上創建的。git從遠程git服務器中刪除開發分支

現在,當我運行git branch -d分支時,它將它移除,然後我將它推開。但我仍然看到git遠程服務器上的分支。

當我創建這個分支時,我看到類似的問題,並且我無法在遠程git服務器上看到它。

我甚至可以從這個分支結賬。

我在這裏錯過了什麼嗎?

回答

7

要刪除的遠程

git push remote :refs/heads/development 
+3

或等效:'git push remote:development' – Koraktor 2012-01-27 22:25:29

+0

@Koraktor,是的,除非ref是別處,否則會這樣做。 – 2012-01-27 22:26:33

3

分支,可以用下面的神祕的命令刪除遠程分支:

git push origin :newfeature 

您可能需要更新索引,所以跟蹤分支被作爲去除好:

git fetch origin --prune 
9

爲了擴大這些答案,每個分支基本上存在於三個地方:

  • 在遠程服務器上,例如origin/foo
  • 你的origin/foo本地副本(這是通過git fetch更新)
  • 在當地的分行foo(這是通過git merge origin/foo以下git fetch更新 - 或者更常見的是,兩者都通過git pull一起做)。

git branch -d刪除這三個中的最後一個,即本地分支。 git branch -d -r將刪除您的遠程分支的副本(或者您可以在刪除本地分支後運行git remote prune origin)。

要刪除遠程服務器上的分支,您必須使用git push。舊的語法是git push origin :branchname。這是因爲語法是localref:remoteref,例如,可以將機器上的本地分支推送到具有不同名稱的遠程分支,例如, git push origin localbranch:remotebranch。如果您將localbranch部分留空,您告訴git將任何東西都推送到遠程分支,將其刪除。

如果這很混亂,不要擔心,git開發人員會同意你的意見。較新的版本有--delete選項,因此git push origin --delete branchname的功能與git push origin :branchname的功能相同,但其目的更加清晰。