12332
24287
我想在本地和遠程刪除分支。
嘗試刪除遠程分支失敗
$ git branch -d remotes / origin / bugfix
錯誤:找不到分支'remotes / origin / bugfix'。
$ git branch -d起源/錯誤修正
錯誤:找不到分支“來源/錯誤修正”。
$ git branch -rd起源/錯誤修正
刪除的遠程分支源/錯誤修正(是2a14ef7)。
$ git push
一切都是最新的
$ git pull
來自github.com:gituser/gitproject
* [新分支]錯誤修正->原點/錯誤修正
已經是最新的。
為了成功地在本地和遠程刪除remotes / origin / bugfix分支,我應該採取什麼措施? 
1個
2
下一個
執行摘要
$ git push -d <遠程名稱> <分支名稱>
$ git branch -d <分支名稱>
請注意,在大多數情況下,遠程名稱是起源。
在這種情況下,您將必須像這樣使用命令。
$ git push -d origin <分支名稱>
刪除本地分支
要刪除本地分支,請使用以下方法之一:
$ git branch -d分支名稱
$ git branch -D分支名稱
注意:-d選項是--delete的別名,僅當分支已在其上游分支中完全合併時才刪除該分支。您還可以使用-D,它是--delete --force的別名,它“無論分支的合併狀態如何”都刪除該分支。 [來源:man git-branch]
另請注意,如果您當前正在使用git branch -d branch_name將會失敗
在您要刪除的分支中。消息開頭
錯誤:無法刪除分支“ branch_name”。如果是這樣,請先切換
到其他分支,例如:git checkout master。
刪除遠程分支[2017年9月8日更新]
從Git v1.7.0開始,您可以使用刪除遠程分支
$ git push <遠程名稱>-刪除<分支名稱>
可能比記住起來容易
$ git push <遠程名稱>:<分支名稱>
在Git v1.5.0中添加了“刪除遠程分支或標籤”。
從Git v2.8.0開始,您還可以使用帶有-d選項的git push作為--delete的別名。
因此,您所安裝的Git版本將決定您是否需要使用更簡單或更難的語法。
刪除遠程分支[2010年1月5日的原始答案]
從Scott Chacon撰寫的Pro Git第3章中:
刪除遠程分支
假設您已經完成了遠程分支的工作-例如,您和您的協作者都完成了一項功能,並將其合併到遠程主分支(或穩定代碼行所在的任何分支)中。您可以使用相當晦澀的語法git push [remotename]:[branch]刪除遠程分支。如果要從服務器刪除服務器修訂分支,請運行以下命令:
$ git push origin:serverfix
到git@github.com:schacon / simplegit.git
-[已刪除] serverfix
繁榮。您的服務器上沒有更多分支。您可能需要關注此頁面,因為您將需要該命令,並且可能會忘記語法。記住此命令的一種方法是調用我們稍早討論過的git push [remotename] [localbranch]:[remotebranch]語法。如果您忽略[localbranch]部分,則基本上是在說:“什麼都不要站在我這一邊,並使其成為[remotebranch]。”
我發布了git push origin:bugfix,它工作得很漂亮。斯科特·查孔(Scott Chacon)是對的,我想提一下那個頁面(或者實際上是在Stack Overflow上回答這個問題)。
那你應該在其他機器上執行
#從所有遠程獲取更改並在本地刪除
#遠程刪除的分支/標籤等
#--prune將完成這項工作:-;
git fetch --all --prune
傳播變化。
|
Matthew的答案對於刪除遠程分支非常有用,我也很欣賞其中的解釋,但是要在兩個命令之間進行簡單區分:
要從計算機上刪除本地分支:
git branch -d {th​​e_local_branch}(改用-D強制刪除分支而不檢查合併狀態)
要從服務器刪除遠程分支:
git push origin --delete {the_remote_branch}
參考:Git:刪除分支(本地或遠程)
|
簡短的答案
如果要對以下命令進行更詳細的說明,請參閱下一節的詳細答案。
刪除遠程分支
git push origin --delete #Git版本1.7.0或更高版本
git push origin -d <分支>#較短的版本(Git 1.7.0或更高版本)
git push origin:#低於1.7.0的Git版本
刪除本地分支
git branch --delete <分支>
git branch -d <分支>#較短的版本
git branch -D <分支>#強制刪除未合併的分支
刪除本地遠程跟踪分支
git branch --delete --remotes <遠程> / <分支>
git branch -dr <遠程> / <分支>#更短
git fetch  --prune#刪除多個過時的遠程跟踪分支
git fetch <遠程> -p#更短
長答案:要刪除三個不同的分支!
在處理本地和遠程刪除分支時,請記住涉及三個不同的分支:
本地分支X。
遠程起源分支X。
跟踪遠程分支X的本地遠程跟踪分支原點/ X。
使用的原始海報:
git branch -rd起源/錯誤修正
它僅刪除了他的本地遠程跟踪分支的origin / bugfix,而沒有刪除原始的實際遠程分支bugfix。
要刪除該實際的遠程分支,您需要
git push origin-刪除錯誤修正
額外細節
以下各節描述了刪除遠程和遠程跟踪分支時要考慮的其他詳細信息。
推動刪除遠程分支也將刪除遠程跟踪分支
請注意,從命令行刪除遠程分支X使用git push也將刪除本地遠程跟踪分支的origin / X,因此不必使用git fetch --prune或git fetch -p修剪過時的遠程跟踪分支。但是,無論如何都不會造成傷害。
您可以通過運行以下命令驗證遠程跟踪分支的origin / X是否也已刪除:
#僅查看遠程跟踪分支
git branch-遠程
git分支-r
#嚴格查看本地和遠程跟踪分支
git分支--all
git分支-a
修剪過時的本地遠程跟踪分支origin / X
如果您沒有從命令行中刪除遠程分支X(如上所述),那麼本地存儲庫仍將包含(現在已過時)遠程跟踪分支origin / X。例如,如果您直接通過GitHub的Web界面刪除了遠程分支,則會發生這種情況。
刪除這些過時的遠程跟踪分支的一種典型方法(自Git版本1.6.6起)是簡單地使用--prune或更短的-p運行git fetch。請注意,這將刪除遠程上不再存在的任何遠程分支的所有過時的本地遠程跟踪分支:
git fetch origin --prune
git fetch origin -p#更短
以下是1.6.6發行說明中的相關報價(重點是我的):
“ git fetch”學習了--all和--multipleoptions,可以從
許多存儲庫,以及--prune選項可刪除遠程跟踪
過時的分支。這些使“ git remote update”和“ git
遠程修剪”的必要性較低(沒有計劃刪除“遠程修剪”
更新”或“遠程修剪”)。
以上自動修剪的替代方法,用於過時的遠程跟踪分支
另外,除了通過git fetch -p修剪過時的本地遠程跟踪分支外,您還可以通過僅使用--remote或-r標誌手動刪除分支來避免進行額外的網絡操作:
git branch-刪除--remote origin / X
git branch -dr origin / X#更短
也可以看看
git-branch(1)手冊頁。
git-fetch(1)手冊頁。
Pro Git§3.5 Git分支-遠程分支。
|
刪除分支的步驟:
要刪除遠程分支:
git push origin-刪除
要刪除本地分支,您可以通過三種方式:
1:git branch -D <分支名稱>
2:git branch --delete --force <分支名稱>#與-D相同
3:git branch --delete <分支名稱>#取消合併錯誤
說明:好的,請解釋一下這裡發生了什麼!
只需執行git push origin --delete僅刪除您的遠程分支,在末尾添加分支的名稱,這將刪除並同時將其推送到remote ...
此外,git branch -D,僅刪除本地分支!
-D代表--delete --force即使沒有合併也會刪除分支(強制刪除),但是您也可以使用-d代表--delete代表分支合併狀態拋出錯誤...
我還創建下面的圖像來顯示步驟:
|
您還可以使用以下命令刪除遠程分支
git push-刪除原始服務器修復
哪個與
git push origin:serverfix
但是可能更容易記住。
|
提示:使用刪除分支時
git branch -d <分支名稱>#刪除本地分支
要么
git push origin:<分支名稱>#刪除遠程分支
僅引用被刪除。即使該分支實際上是在遠程上刪除的,對該分支的引用仍然存在於團隊成員的本地存儲庫中。這意味著對於其他團隊成員,當他們執行git branch -a時,刪除的分支仍然可見。
為了解決這個問題,您的團隊成員可以使用
git remote prune <存儲庫>
這通常是git remote prune的起源。
|
如果要刪除分支,請首先檢出要刪除的分支以外的分支。
git checkout other_than_branch_to_be_deleted
刪除本地分支:
git branch -D branch_to_be_deleted
刪除遠程分支:
git push origin-刪除delete branch_to_be_deleted
|
git branch -D <分支名稱>
git branch -D -r origin / <分支名稱>
git push origin:<分支名稱>
|
這很簡單:只需運行以下命令:
要在本地和遠程刪除Git分支,請首先使用以下命令刪除本地分支:
git branch -d示例
(這裡的例子是分支名稱。)
然後,使用以下命令刪除遠程分支:
git push origin:示例
|
很簡單:
刪除遠程分支
git push -d origin <分支名稱>
要么
git push origin:<分支名稱>
強制刪除本地分支
git branch -D <分支名稱>
|
另一種方法是:
git push --prune起源
警告:這將刪除本地不存在的所有遠程分支。或更全面地說
git push-鏡像
將有效地使遠程存儲庫看起來像該存儲庫的本地副本(本地頭,遠程對象和標籤在遠程上被鏡像)。
|
我在Bash設置中使用以下內容:
別名git-shoot =“ git push原點-刪除“
然後,您可以致電:
git-shoot分支名稱
|
本地刪除:
要刪除本地分支,可以使用:
git branch -d <分支名稱>
要強制刪除分支,請使用-D而不是-d。
git branch -D <分支名稱>
遠程刪除:
有兩種選擇:
git push origin:分支名稱
git push origin-刪除分支名稱
我建議您使用第二種方法,因為它更直觀。
|
自2013年1月起,GitHub在“分支”頁面中每個分支旁邊都包含一個Delete分支按鈕。
相關博客文章:創建和刪除分支
|
如果要用一個命令完成這兩個步驟,可以通過將以下內容添加到〜/ .gitconfig中來為其創建別名:
[別名]
rmbranch =“!f(){git branch -d $ {1} && git push origin-刪除$ {1};}; f”
或者,您可以使用以下命令從命令行將其添加到全局配置中
git config --global alias.rmbranch \
'!f(){git branch -d $ {1} && git push origin-刪除$ {1}; };F'
注意:如果使用-d(小寫d),則僅在合併分支後才刪除該分支。要強制執行刪除操作,您將需要使用-D(大寫D)。
|
在本地和遠程刪除分支
結帳到master分支-git checkout master
刪除遠程分支-git push origin --delete <分支名稱>
刪除您的本地分支-git branch --delete <分支名稱>
|
您也可以使用git remote prune origin執行此操作
$ git remote prune origin
修剪起源
網址:git@example.com/yourrepo.git
* [修剪]起源/一些分支
它會修剪並從git branch -r列表中刪除遠程跟踪分支。
|
除了其他答案,我經常使用git_remote_branch工具。這是一個額外的安裝,但是它為您提供了一種與遠程分支進行交互的便捷方法。在這種情況下,要刪除:
grb刪除分支
我發現我也經常使用發布和跟踪命令。
|
刪除本地和遠程的單線命令:
D =分支名稱; git branch -D $ D; git push來源:$ D
或將以下別名添加到您的〜/ .gitconfig中。用法:git kill分支名稱
[別名]
kill =“!f(){git branch -D \” $ 1 \“; git push origin --delete \” $ 1 \“;}; f”
|
刪除分支
假設我們在分支“聯繫表單”上的工作已經完成,並且已經將其集成到“主表單”中。由於我們不再需要它,因此可以將其刪除(本地):
$ git branch -d聯繫人表格
對於刪除遠程分支:
git push origin-刪除聯繫人表格
|
刪除遠程分支
git push origin:<分支名稱>
刪除本地分支
git branch -D <分支名稱>
刪除本地分支步驟:
結帳到另一個分支
刪除本地分支
|
簡單地說:
git branch -d <分支名稱>
git push origin:<分支名稱>
|
git push origin --delete <分支名稱>
比起記憶更容易
git push origin:分支名稱
|
現在,您可以使用GitHub Desktop應用程序執行此操作。
啟動應用程序後
單擊包含分支的項目
切換到您要刪除的分支
從“分支”菜單中,選擇“取消發布...”,以將分支從GitHub服務器中刪除。
從“分支”菜單中,選擇“刪除“ branch_name” ...”,以從本地計算機(也就是您正在使用的計算機)上刪除該分支。
|
本地刪除-(正常)
git branch -d my_branch
如果您的分支處於重新基準化/合併進度中,並且未正確完成,這意味著您將收到錯誤消息,即正在重新進行基準/合併,因此在這種情況下,您將無法刪除分支。
因此,您要么需要解決重新基準化/合併。否則,您可以通過以下方式強制刪除:
git branch -D my_branch
要遠程刪除:
git push-刪除起源my_branch
您可以使用以下方法執行相同操作:
git push origin:my_branch#容易記住,兩者的作用相同。
圖示:
|
如果您具有與遠程分支的名稱相同的標籤,則此方法將無效:
$ git push origin:分支或標籤名
錯誤:dst refspec分支或標記名稱匹配多個。
錯誤:無法將一些引用推送到'git@github.com:SomeName / some-repo.git'
在這種情況下,您需要指定要刪除的分支,而不是標籤:
git push origin:refs / heads / branch-or-tag-name
同樣,要刪除標籤而不是分支,可以使用:
git push origin:refs / tags / branch-or-tag-name
|
其他許多答案將導致錯誤/警告。這種方法是相對簡單的方法,例如,如果尚未完全合併到some_other_branch中,則可能仍需要git branch -D branch_to_delete。
git checkout some_other_branch
git push原點:branch_to_delete
git branch -d branch_to_delete
如果刪除了遠程分支,則不需要遠程修剪。它僅用於在您正在跟踪的存儲庫上獲取最新的遠程服務器。我觀察到git fetch會添加遙控器,而不是刪除它們。這是git remote prune origin實際執行操作的示例:
用戶A執行上述步驟。用戶B將運行以下命令以查看最新的遠程分支:
git獲取
git remote prune起源
git分支-r
|
我討厭用谷歌搜索這個答案,所以我對crizCraig早些時候發布的答案採取了類似的方法。
我在Bash個人資料中添加了以下內容:
函數gitdelete(){
git push origin-刪除$ 1
git branch -D $ 1
}
然後,每次我完成一個分支(例如合併到master)後,我都會在終端中運行以下命令:
gitdelete我的分支名稱
...然後從起點以及本地刪除my-branch-name。
|
執行之前
git branch --delete <分支>
通過執行以下操作,確保首先確定遠程分支的確切名稱是什麼:
git ls-remote
這將告訴您確切輸入值的內容。 (分支區分大小寫!)
|
使用:
git push origin:bugfix#刪除遠程分支
git branch -d錯誤修正#必須手動刪除本地分支
如果確定要刪除它,請運行
git branch -D錯誤修正
現在要清理已刪除的遠程分支,請運行
git remote prune起源
|
1個
2
下一個
高度活躍的問題。贏得10個聲譽才能回答這個問題。信譽要求有助於保護該問題免受垃圾郵件和非答復活動的侵害。
不是您要找的答案?瀏覽標記為git version-control git-branch git-push git-remote的其他問題,或詢問您自己的問題。