git刪除master - git創建branch




如何在本地和遠程刪除Git分支? (20)

執行摘要

$ git push --delete <remote_name> <branch_name>
$ git branch -d <branch_name>

請注意,在大多數情況下,遠程名稱是origin

刪除本地分支

要刪除本地分支,請使用以下某個選項:

$ git branch -d branch_name
$ git branch -D branch_name

注意: -d選項是--delete的別名,只有在已經在其上游分支中完全合併的情況下才會刪除該分支。 您還可以使用-D ,它是--delete --force的別名,它會刪除分支“無論其合併狀態如何”。 [來源: man git-branch ]

刪除遠程分支[2017年9月8日更新]

Git v1.7.0開始 ,您可以使用刪除遠程分支

$ git push <remote_name> --delete <branch_name>

這可能比記住更容易記住

$ git push <remote_name> :<branch_name>

Git v1.5.0中添加了“刪除遠程分支或標記”。

Git v2.8.0開始,你也可以使用git push-d選項作為--delete的別名。

因此,您安裝的Git版本將決定您是否需要使用更簡單或更難的語法。

刪除遠程分支[原始答案從2010年1月5日]

來自Scott Chacon的Pro Git第3章:

刪除遠程分支

假設您已經完成了遠程分支 - 比如說,您和您的協作者已經完成了一項功能並將其合併到您的遠程主分支(或您的穩定代碼行所在的任何分支)。 您可以使用相當鈍的語法git push [remotename] :[branch]刪除遠程分支。 如果要從服務器中刪除serverfix分支,請運行以下命令:

$ git push origin :serverfix
To [email protected]:schacon/simplegit.git
 - [deleted]         serverfix

繁榮。 您的服務器上沒有更多分支。 您可能想要熟悉此頁面,因為您需要該命令,並且您可能會忘記語法。 記住這個命令的一種方法是回憶一下我們之前討論過的git push [remotename] [localbranch]:[remotebranch]語法。 如果你放棄[localbranch]部分,那麼你基本上就是說:“不要採取任何行動,讓它成為[remotebranch] 。”

我發布了git push origin :bugfix ,它運行得很漂亮。 斯科特查康是對的 - 我會想要聽到那個頁面(或者通過在Stack Overflow上回答這個問題,實際上是狗耳朵)。

然後你應該在其他機器上執行它

git fetch --all --prune

傳播變化。

我想刪除本地和我在GitHub上的遠程項目分支上的分支。

嘗試刪除遠程分支失敗

$ git branch -d remotes/origin/bugfix
error: branch 'remotes/origin/bugfix' not found.

$ git branch -d origin/bugfix
error: branch 'origin/bugfix' not found.

$ git branch -rd origin/bugfix
Deleted remote branch origin/bugfix (was 2a14ef7).

$ git push
Everything up-to-date

$ git pull
From github.com:gituser/gitproject
* [new branch] bugfix -> origin/bugfix
Already up-to-date.

在本地和GitHub上成功刪除remotes/origin/bugfix分支需要做些什麼?


簡短的答案

如果您想要更詳細地解釋以下命令,請參閱下一節中的長答案。

刪除遠程分支:

git push origin --delete <branch>  # Git version 1.7.0 or newer
git push origin :<branch>          # Git versions older than 1.7.0

刪除本地分支:

git branch --delete <branch>
git branch -d <branch> # Shorter version
git branch -D <branch> # Force delete un-merged branches

刪除本地遠程跟踪分支:

git branch --delete --remotes <remote>/<branch>
git branch -dr <remote>/<branch> # Shorter

git fetch <remote> --prune # Delete multiple obsolete tracking branches
git fetch <remote> -p      # Shorter

長答案:有3個不同的分支要刪除!

當您在本地和遠程處理刪除分支時,請記住, 涉及3個不同的分支

  1. 本地分支X
  2. 遠程原點分支X
  3. 跟踪遠程分支X的本地遠程跟踪分支origin/X

使用的原始海報

git branch -rd origin/bugfix

它只刪除了他的本地遠程跟踪分支 origin/bugfix ,而不是origin遠程分支bugfix

要刪除該實際的遠程分支 ,您需要

git push origin --delete bugfix

額外細節

以下部分介紹了刪除遠程和遠程跟踪分支時要考慮的其他詳細信息。

推送刪除遠程分支也會刪除遠程跟踪分支

請注意,使用git push從命令行刪除遠程分支X 也將刪除本地遠程跟踪分支 origin/X ,因此不必使用git fetch --prunegit fetch -p修剪過時的遠程跟踪分支。 git fetch -p ,但如果你這樣做也不會受傷。

您可以通過運行以下命令驗證是否還刪除了遠程跟踪分支origin/X

# View just remote-tracking branches
git branch --remotes
git branch -r

# View both strictly local as well as remote-tracking branches
git branch --all
git branch -a

修剪過時的本地遠程跟踪分支origin / X.

如果您沒有從命令行刪除遠程分支X (如上所述),那麼您的本地倉庫仍將包含(現在已過時)遠程跟踪分支origin/X 例如,如果您通過GitHub的Web界面直接刪除了遠程分支,就會發生這種情況。

刪除這些過時的遠程跟踪分支(從Git版本1.6.6開始)的典型方法是使用--prune或更短的-p運行git fetch請注意,這將刪除遠程不再存在的任何遠程分支的所有過時的本地遠程跟踪分支

git fetch origin --prune
git fetch origin -p # Shorter

以下是1.6.6發行說明中的相關引用(強調我的):

“git fetch”學習了 --all--multiple選項,用於從許多存儲庫運行fetch,以及--prune選項用於刪除過時的遠程跟踪分支。 這些使得“git remote update”和“git remote prune”不那麼必要(雖然沒有計劃刪除“遠程更新”或“遠程修剪”)。

替代上述自動修剪過時的遠程跟踪分支

或者,不是通過git fetch -p修剪過時的本地遠程跟踪分支,而是通過使用--remote-r標誌手動刪除分支來避免進行額外的網絡操作

git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter

也可以看看


Matthew的答案很適合刪除遠程分支,我也很欣賞這些解釋,但是要簡單區分這兩個命令:

要從您的計算機中刪除本地分支

git branch -d {the_local_branch} (使用-D代替強制刪除分支而不檢查合併狀態)

要從服務器中刪除遠程分支

git push origin --delete {the_remote_branch}

參考: https://makandracards.com/makandra/621-git-delete-a-branch-local-or-remotehttps://makandracards.com/makandra/621-git-delete-a-branch-local-or-remote


刪除分支

讓我們假設我們在分支“聯繫表單”上的工作已經完成,我們已經將它集成到“master”中。 由於我們不再需要它,我們可以刪除它(本地):

$ git branch -d contact-form

並刪除遠程分支:

git push origin --delete contact-form

在本地刪除:

要刪除本地分支,您可以使用:

git branch -d branch_name 

要強制刪除分支,請使用-D而不是-d

git branch -D branch_name

遠程刪除:

有兩種選擇:

git push origin :branchname  

git push origin --delete branchname 

我建議你使用第二種方式,因為它更直觀。


要在本地刪除 - (正常),

git branch -d my_branch

如果您的分支在重新定位/合併進度並且未正確完成意味著,您將收到錯誤Rebase/Merge in progress中,因此在這種情況下,您將無法刪除您的分支。

所以要么你需要解決變基/合併,否則你可以通過使用強制刪除,

git branch -D my_branch

要在遠程中刪除:

git push --delete origin my_branch

可以做同樣的使用,

git push origin :my_branch   # easy to remember both will do the same.

圖示,


刪除遠程分支

git push origin :<branchname>

刪除本地分支

git branch -D <branchname>

刪除本地分支步驟:

  1. 結賬到另一個分行
  2. 刪除本地分支

另一種方法是

git push --prune origin

警告: 這將刪除本地不存在的所有遠程分支。 或者更全面,

git push --mirror

將有效地使遠程存儲庫看起來像存儲庫的本地副本(本地磁頭,遠程和標籤在遠程鏡像)。


在本地和遠程刪除分支

  • 結帳到主分支 - git checkout master

  • 刪除遠程分支 - git push origin --delete <branch-name>

  • 刪除本地分支 - git branch --delete <branch-name>


如果您的標籤與遠程分支的名稱相同,則無效:

$ git push origin :branch-or-tag-name
error: dst refspec branch-or-tag-name matches more than one.
error: failed to push some refs to '[email protected]:SomeName/some-repo.git'

在這種情況下,您需要指定要刪除分支,而不是標記:

git push origin :refs/heads/branch-or-tag-name

同樣,要刪除標記而不是分支,您將使用:

git push origin :refs/tags/branch-or-tag-name

如果要刪除分支,請首先簽出除要刪除的分支以外的分支。

git checkout other_than_branch_to_be_deleted

刪除本地分支:

git branch -D branch_to_be_deleted

刪除遠程分支:

git push origin --delete branch_to_be_deleted

您還可以使用以下命令刪除遠程分支。

git push --delete origin serverfix

這與做同樣的事情

git push origin :serverfix

但它可能更容易記住。


我在Bash設置中使用以下內容:

alias git-shoot="git push origin --delete"

然後你可以打電話:

git-shoot branchname

所有其他答案的混搭。 需要Ruby 1.9.3+, 在OS X上測試過。

調用此文件git-remove ,使其可執行,並將其放在您的路徑中。 然後使用,例如, git remove temp

#!/usr/bin/env ruby
require 'io/console'

if __FILE__ == $0
      branch_name = ARGV[0] if (ARGV[0])
      print "Press Y to force delete local and remote branch #{branch_name}..."
    response = STDIN.getch
    if ['Y', 'y', 'yes'].include?(response)
      puts "\nContinuing."
      `git branch -D #{branch_name}`
      `git branch -D -r origin/#{branch_name}`
      `git push origin --delete #{branch_name}` 
    else
      puts "\nQuitting."
    end
end

現在,您可以使用GitHub桌面應用程序。

啟動應用程序後

  1. 單擊包含分支的項目
  2. 切換到要刪除的分支
  3. 從“分支”菜單中,選擇“取消發布...”,以從GitHub服務器中刪除分支。
  4. 從“分支”菜單中,選擇“刪除” branch_name “...”,將分支從本地計算機(也就是您當前正在處理的計算機)中刪除

簡單地說:

git branch -d <branch-name>
git push origin :<branch-name>

許多其他答案將導致錯誤/警告。 這種方法相對簡單,雖然你可能仍然需要git branch -D branch_to_delete如果它沒有完全合併到some_other_branch ,例如。

git checkout some_other_branch
git push origin :branch_to_delete
git branch -d branch_to_delete

如果刪除了遠程分支,則不需要遠程修剪。 它只用於獲取您正在跟踪的回購中最新的遙控器。 我觀察到git fetch會添加遙控器,而不是刪除它們。 以下是git remote prune origin實際執行操作的示例:

用戶A執行上述步驟。 用戶B將運行以下命令以查看最新的遠程分支

git fetch
git remote prune origin
git branch -r

這很簡單:只需運行以下命令:

要在本地和遠程刪除Git分支,首先使用以下命令刪除本地分支:

git branch -d example

(這裡的example是分支名稱)

然後使用命令刪除遠程分支:

git push origin :example

git branch -D <name-of-branch>
git branch -D -r origin/<name-of-branch>
git push origin :<name-of-branch>

git push origin --delete branchName

更容易記住

git push origin :branchName




git-remote