git - 刪除Git在本地和遠程分支

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

成功刪除本地分支

$ git branch -D bugfix
Deleted branch bugfix (was 2a14ef7).

嘗試刪除遠程分支

$ 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.

以不同方式需要怎麼做才能成功刪除 remotes/origin/bugfix分支在本地和在GitHub?

时间:

刪除遠程分支 matthew的就是很好的答案,我也非常喜歡這個解釋,但要做一個簡單的區分這兩個命令:

若要刪除 本地分支 從你的電腦:

git branch -d the_local_branch

若要刪除 遠程分支 從伺服器:

git push origin :the_remote_branch

從這裡獲取 : https://makandracards.com/makandra/621-git-delete-a-branch-local-or-remote

短回答

如果你希望更詳細解釋下列命令,然後在下一部分中看到的長答案。

刪除遠程分支:

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. 遠程origin分支 X.
  3. 本地遠程跟蹤分支 origin/X能夠跟蹤遠程分支 X.

Visualization of 3 branches

使用原始的發布者

git branch -rd origin/bugfix

它只刪除了本地遠程跟蹤分支 origin/bugfix,而不是實際遠程分支 bugfixorigin.

Diagram 2

才能真正刪除該圖片遠程分支,需要

git push origin --delete bugfix

Diagram 3

其他Details

下面幾節將介紹更多詳細信息時需要考慮刪除遠程分支和遠程跟蹤。

刪除遠程分支推送到遠程追蹤分支也會刪除

請注意,刪除遠程分支 X在命令行中使用 git push也會刪除本地遠程跟蹤分支 origin/X所以它不需要消除過時的遠程跟蹤分支與 git fetch --prunegit 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在命令行中( 如以上所示),則你的本地Repo仍將包含遠程跟蹤分支( 已經過時) origin/X. 有可能出現這種情況,如果刪除了直接通過GitHub遠程分支Web介面為例。

典型地刪除這些過時的遠程跟蹤分支( git版本1 .6.6 之後) 是簡單地運行 git fetch--prune或更短 -p. Note,這樣將會刪除所有過時的本地遠程跟蹤分支的所有遠程分支以上不再存在的遠程

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

了,以下是相關引述 1 .6 .6發行說明 ( 我的重點) :

" git fetch " 學習了--all--multiple要運行選項,獲取來自多個存儲庫和 --prune選擇要刪除的遠程跟蹤分支就過時了 這些讓" git remote update " 和" git remote prune " 遠程更新" 或者" 刪除" remote prune ",雖然不太必要( 沒有計劃) 。

除了上述的自動剪除過時的遠程跟蹤分支

或者,將過時的遠程跟蹤分支到本地而不是修剪 git fetch -p,可以避免進行額外的網路操作。只要手動移除分支 和 --remote-r標誌:

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

請參見

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

git push --delete origin serverfix

命令是一樣的,

git push origin :serverfix

但可能會更容易記住。

提示: 如果刪除的分支使用

git branch -d <branchname>    # deletes local branch

git push origin :<branchname> # deletes remote branch

只有引用都將被刪除。 即使在遠程分支實際上是刪除對它的引用仍然存在於本地存儲庫的工作組成員。 這意味著,其他團隊成員執行時仍然可以看見已刪除的分支git branch -a.

為了解決這個工作組成員可以去除已刪除的分支,

git remote prune <repository>

這通常是 git remote prune origin.

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

另一種方法是

git push --prune origin

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

git push --mirror

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

在本地和遠程刪除git分支,先刪除本地分支,使用命令:

git branch -d example [here example is the branch name]

在那之後刪除遠程分支,使用命令:

git push origin :example

我按下面的, 在我的 Bash 設置:

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

然後,可以調用:

git-shoot branchname

如果要刪除,請先檢出一個分支到分支之外的其他分支的新版本。

git checkout other_than_branch_to_be_deleted

刪除本地分支

git branch -D branch_to_be_deleted

刪除遠程分支

git push origin --delete branch_to_be_deleted
...