ローカルおよびリモートでGitブランチを削除するにはどうすればよいですか?


16958

ローカルとリモートの両方でブランチを削除したい。

リモートブランチを削除する試みの失敗

$ 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ローカルとリモートの両方でブランチを正常に削除するには、どうすればよいですか?


1058
モデレーターのメモ:この質問に回答する場合は、既に40の回答が投稿されていることに注意してください。あなたの新しい答えは実質的な価値を追加しますか?
Robert Harvey

54
注:Git 2.5以降(2015年第2四半期)の場合、正確なメッセージは " deleted remote-tracking branch"です:github.com/git/git/commit/…を
VonC

ローカルブランチとリモートブランチの削除の違いを単純化するこのスクリプトに興味があるかもしれません:tlbx.app/blog/delete-any-git-branch-the-easy-way
Mig

@RobertHarveyは現在39名のみ
Adam、

@Adam:81.さまざまな理由で42の回答が削除された。特定のトピックに対する一般市民の原因不明の執着は、人生で最も大きな謎の1つです。
Robert Harvey

回答:


21432

エグゼクティブサマリー

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

ほとんどの場合、リモート名はであることに注意してくださいorigin。そのような場合、そのようなコマンドを使用する必要があります。

$ git push -d origin <branch_name>

ローカルブランチを削除

ローカルブランチを削除するには、次のいずれかを使用します。

$ 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]。サーバーからサーバー修正ブランチを削除する場合は、次のコマンドを実行します。

$ git push origin :serverfix
To git@github.com:schacon/simplegit.git
 - [deleted]         serverfix

ブーム。サーバーにブランチはもうありません。このページはドッグイアする必要があるかもしれません。そのコマンドが必要になるため、構文を忘れてしまう可能性があります。このコマンドを覚えておくにはgit push [remotename] [localbranch]:[remotebranch]、少し前に説明した構文を思い出してください。その[localbranch]部分を省略した場合、基本的には「私の側に何も取らないでください」と言っています[remotebranch]

私が発行しgit push origin: bugfix、それは美しく機能しました。スコットチャコンは正しかった—私はそのページ(またはStack Overflowでこれに答えることによって事実上犬の耳)に傾けたいと思うでしょう。

次に、これを他のマシンで実行する必要があります

# Fetch changes from all remotes and locally delete 
# remote deleted branches/tags etc
# --prune will do the job :-;
git fetch --all --prune

変更を伝播します。


353
git fetch --all --pruneサーバー上のリモートブランチを削除した後、他のマシンでを実行することを忘れないでください。||| でローカルブランチをgit branch -d削除し、git push origin --delete他のマシンでリモートブランチを削除した後も、「古いトラッキングブランチ」が残っている可能性があります(それらを確認するにはgit branch -a)。これらを取り除くために行いますgit fetch --all --prune
Trevor Boyd Smith

14
git branch -aすべてのブランチを表示する@TrevorBoydSmithに加えて、git branch -rリモートブランチのみを表示するために使用することもできます。参照git remote show origin-ソース:gitready.com/intermediate/2009/02/13/list-remote-branches.html
Sandra

17
私はgit branch -D Branch_Name地元の枝を取り除くために走らなければなりませんでした
Kolob Canyon

11
@KolobCanyon -Dを使用する必要があるのは、ブランチが別のブランチにマージされていない場合のみです。
BTRUE 2016

3
問題は、「ローカルとGitHubの両方でremotes / origin / bugfixブランチを正常に削除するために、別の方法で何をする必要がありますか?」更新された回答でコマンドを実行した後、ローカルブランチはまだ存在しています。受け入れられた答えが完全な答えであるなら、それは素晴らしいでしょう。...難しいGitは単純なタスクを行う方法で、その絶対に驚くべき
JWW

3316

マシューの答えリモートブランチを削除するのに最適です。また、説明にも感謝しますが、2つのコマンドを簡単に区別します。

マシンからローカルブランチを削除するには:

git branch -d {the_local_branch}-D代わりに、マージされたステータスをチェックせずにブランチを強制的に削除するために使用します)

サーバーからリモートブランチを削除するには:

git push origin --delete {the_remote_branch}

リファレンス:Git:ブランチを削除する(ローカルまたはリモート)


250
@megidoはよく-D、削除を強制する-d。それは既にマージされていない場合に警告を与える
TankorSmash

8
ローカルブランチがマスターとマージされずに実行された場合、次の'git branch -d your_branchようなエラーが発生しますerror: The branch 'your_branch' is not fully merged. If you are sure you want to delete it, run 'git branch -D your_branch'.
オタク

12
安全なため、-Dの代わりに-dを使用することをお勧めします。マージされていないコミットのために-dが失敗した場合は、それを評価する必要があります。削除しても問題ない場合は、-Dを使用してください。
rooby 2016

7
リモートブランチが削除されたリポジトリクローンを持つ他のものは、リモートに存在しない古いブランチをローカルで削除するために実行する必要がありますgit remote prune <name>(などgit remote prune origin)。
code_dredd

3
-dが現在のHEADとマージされていない場合に警告を表示することを追加します。明確にする必要がある場合は、このコマンドをお勧めしgit branch -a --merged origin/masterます。ローカルとリモートの両方のブランチが一覧表示されます。マスターに統合されました。追加情報はこちら
エリック

2043

短い答え

次のコマンドの詳細な説明が必要な場合は、次のセクションの詳細な回答を参照してください。

リモートブランチを削除する

git push origin --delete <branch>  # Git version 1.7.0 or newer
git push origin -d <branch>        # Shorter version (Git 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 remote-tracking branches
git fetch <remote> -p      # Shorter

長い答え:削除するには、3つの異なるブランチがあります!

ローカルとリモートの両方でブランチを削除する場合は、3つの異なるブランチが関係していること注意しください。

  1. ローカルブランチX
  2. リモートオリジンブランチX
  3. リモートブランチorigin/Xを追跡するローカルリモート追跡ブランチX

3つのブランチの可視化

使用された元のポスター:

git branch -rd origin/bugfix

これにより、ローカルのリモート追跡ブランチ のみが削除され、上のorigin/bugfix実際のリモートブランチbugfixは削除されませんでしたorigin

図2

その実際のリモートブランチを削除するには、あなたは必要です

git push origin --delete bugfix

図3

追加の詳細

次のセクションでは、リモートブランチとリモートトラッキングブランチを削除するときに考慮すべき追加の詳細について説明します。

リモートブランチを削除するようにプッシュすると、リモート追跡ブランチも削除されます

Xコマンドラインからa git push 使用してリモートブランチを削除すると、ローカルのリモートトラッキングブランチも削除されるorigin/Xので、git fetch --pruneまたはで古いリモートトラッキングブランチを削除する必要はありません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

廃止されたローカルリモート追跡ブランチオリジン/ Xのプルーニング

Xコマンドラインからリモートブランチを削除しなかった場合(上記のように)、ローカルリポジトリには(廃止された)リモート追跡ブランチが含まれていorigin/Xます。これは、たとえばGitHubのウェブインターフェースを介してリモートブランチを直接削除した場合に発生する可能性があります。

これらの廃止されたリモート追跡ブランチを削除する一般的な方法(Gitバージョン1.6.6以降)はgit fetch--pruneまたはより短いで実行するだけ-pです。これにより、リモートに存在しなくなったリモートブランチの古いリモートトラッキングブランチがすべて削除されることに注意してください

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

1.6.6リリースノートからの関連する引用は次のとおりです(強調は私のものです)。

多くのリポジトリからフェッチを実行するための「git fetch」の学習--all--multipleオプション、および--prune古くなったリモート追跡ブランチを削除するオプション。 これらにより、「git remote update」と「git remote prune」の必要性が低くなります(ただし、「remote update」も「remote prune」も削除する予定はありません)。

廃止されたリモート追跡ブランチの上記の自動プルーニングの代替

また、代わりを通して、あなたの時代遅れのローカルリモート追跡の枝を剪定のgit fetch -pあなたは余分なネットワーク操作を避けることができますだけで、手動で(複数可)、分岐を除去することによって、--remoteまたは-rフラグ:

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

こちらもご覧ください


あなたのイラストから、ローカルクローンレポとリモートオリジンレポがあることがわかります。したがって、少なくとも2つの物理的なブランチがあります。削除する3番目のブランチはどこですか?3番目のブランチは、ローカルクローンリポジトリのコミットを指すポインターにすぎませんか?
ハギー、2016

6
@huggieそれはかなり正しいです。Gitのブランチは、コミットに添付されたブックマークにすぎません。上のグラフでは、ローカルクローン(2つのブランチ)にブックマークがXあり、リモート(3つのブランチを作成origin/X)にブックマークがありますX

6
リモート追跡ブランチの場合は+1。このブランチは、他の誰かのブランチを複製するときに問題を引き起こすものです。それはあなたのコミットを追跡し続け、その人のブランチにプッシュしたいかどうか尋ねます。
Kermit_ice_tea 2017年

1
グラフィックスだけでもゴールドです。
Mogens TrasherDK

1
将来の読者のために、上記で@Kermit_ice_teaが話しているのは、(この回答で説明されている)ローカルブランチであり、リモート追跡ブランチではありません。ときローカルブランチは、リモートブランチにデフォルトからプルとプッシュすることによって、それがすることのために構成された「上流分岐」を有します。ローカルブランチその上で「上流分岐」セットを持っていている「追跡ブランチ」と呼ばれるそれはと混同するのは簡単ですので、リモート追跡の枝による類似の用語へ。
David P

1521

ブランチを削除する手順:

リモートブランチを削除する場合

git push origin --delete <your_branch>

削除するためのローカルブランチを、あなたが持っている3つの方法

1: git branch -D <branch_name>

2: git branch --delete --force <branch_name>  # Same as -D

3: git branch --delete  <branch_name>         # Error on unmerge

説明:わかりました、ここで何が起こっているのかを説明してください!

単純に行うgit push origin --deleteために、あなたのリモートブランチを削除するだけで、最後にブランチの名前を追加し、これを削除しますリモートにそれをプッシュすると同時に、...

また、git branch -Dローカルブランチのみを削除するだけです!...

-D--delete --forceであっても、それが(削除力)を合併していないが、あなたはまた、使用することができますブランチを削除なる-dために立っている--deleteブランチのマージステータスのそれぞれのエラーをスローしています...

以下画像も作成して、手順を示します。

gitでリモートブランチとローカルブランチを削除する


49
git branch -aローカルとリモートのブランチを表示します。図の紹介に役立ちます。
LoranceChen 2017

4
削除するブランチを設定する場合、ローカルブランチを削除する前に、削除する必要のあるブランチ(例:マスター)以外のブランチをチェックアウトする必要があります。
BaDr Amer、

オリジンでブランチが削除されても、ローカルリポジトリはそのことに気づきません。これらのブランチのローカルにキャッシュされたバージョンはまだあります(これは実際には適切です)が、git branch -aはそれらをリモートブランチとしてリストします。次のようにローカルでその情報をクリーンアップできます。 git remote prune originます。削除されたブランチのローカルコピーはこれによって削除されません。同じ効果が次のようにして達成されますgit fetch --prune
vibs2006

2
画像は注意散漫で非常に大きく、答えに何も追加されません。これがSOのトレンドにならないことを願っています。
jmiserez

797

以下を使用してリモートブランチを削除することもできます

git push --delete origin serverfix

これは同じことをします

git push origin :serverfix

覚えやすいかもしれません。


1
...そしてより安全に使用:O
cst1992 '29

1
ローカルブランチの削除に関する部分を忘れてしまいました。次のgit branch -d <local_branch>方法git branch -D <local_branch>で削除できます。または 強制削除
Amit Dash

370

ヒント:を使用してブランチを削除する場合

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です。


14
上記のgit push操作により、ローカルブランチリモートブランチが削除されることを明確にする必要があります。
アニカバックストローム2013年

22
git remote pruneは、廃止されたリモート追跡ブランチを削除するためのやや廃止された方法であることに注意してください。新しい方法は、git fetch --pruneまたはを使用することですgit fetch -p

1
@RRMadhav、実際には、リモートブランチへの参照がローカルで削除されるため、削除したブランチは削除後に表示されません。そのブランチをチェックアウトしたチームの他の誰もがその参照を保持し、ブランチを枝刈りしない限り引き続き参照します。
pfrenssen 2014

362

ブランチを削除する場合は、まず、削除するブランチ以外のブランチにチェックアウトします。

git checkout other_than_branch_to_be_deleted

ローカルブランチを削除する:

git branch -D branch_to_be_deleted

リモートブランチを削除する:

git push origin --delete branch_to_be_deleted

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

7
-D 強制的に削除することに注意してください。を使用-dすることをお勧めします。これは、危険なことをする必要があるかどうかを思い出させます。
Jonathon Reinhart

13
ahahah :)それはあなた次第です:gitの泣き声を見たい場合は-dを、泣きたい場合は-Dを使用してください。
フェリペ

225

これは簡単です。次のコマンドを実行するだけです。

ローカルとリモートの両方でGitブランチを削除するには、まず次のコマンドを使用してローカルブランチを削除します。

git branch -d example

(こちらexampleが支店名です。)

その後、次のコマンドを使用してリモートブランチを削除します。

git push origin :example

199

別のアプローチは:

git push --prune origin

警告: これにより、ローカルに存在しないすべてのリモートブランチが削除されます。またはもっと包括的に、

git push --mirror

事実上、リモートリポジトリはリポジトリのローカルコピーのように見えます(ローカルヘッド、リモート、タグはリモートでミラーリングされます)。


1
git push --prune originはgitlabでは何もしませんでした:git clone git://repo.git; gitブランチ-d -r origin / some-branches; git push-オリジンをプルーンします。利回り:最新のものすべて。git fetch; ローカルで削除されたブランチを元に戻します。git push --mirror; 今、彼らは本当になくなっています!
eMBee 2015年

166

私はBash設定で以下を使用します:

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

その後、呼び出すことができます:

git-shoot branchname

11
結局、エイリアス「shoot」を.gitconfigに追加しましたshoot = push origin --delete
hdost

オリジンがAtlassian Stashであり、ブランチがデフォルトとして設定されている場合、「デフォルトでは、現在のブランチの削除は拒否されます...」というエラーが発生します。削除する前に、Stashのデフォルトのブランチを別のブランチを指すように変更する必要がありました。
neoscribe 2014

これはあなたがやったように完全に簡単ですが、fyi gitではカスタムコマンドを作成することもできます。置くgit push origin --delete $1と呼ばれるあなたのパス上のファイルにgit-shootし、git shoot branchnameあまりにも動作します。
mahemoff

132

ローカルで削除:

ローカルブランチを削除するには、以下を使用できます:

git branch -d <branch_name>

ブランチを強制的に削除するには、の-D代わりにを使用します-d

git branch -D <branch_name>

リモートで削除:

2つのオプションがあります。

git push origin :branchname

git push origin --delete branchname

2番目の方法はより直感的であるため、使用することをお勧めします。


129

2013年1月以降、GitHubには Delete branch「ブランチ」ページの各ブランチの横にボタンが。

関連するブログ投稿:ブランチを作成および削除する


3
私は今年Githubを使い始めたばかりだったので、なぜこれが非常に高い評価の質問であり、トップの回答のどれもGithub Webインターフェースから単に削除することを提案していないのか疑問に思いました!それが最近の追加にすぎないことは興味深い。
カムジャクソン

6
私はこれを指摘するつもりでした。ボタンはローカルブランチを削除しないことに注意してください...その方法については、この回答を参照してください:stackoverflow.com/a/10999165/901641
ArtOfWarfare

127

これらの両方の手順を単一のコマンドで完了したい場合は、以下にを追加してエイリアスを作成できます~/.gitconfig

[alias]
    rmbranch = "!f(){ git branch -d ${1} && git push origin --delete ${1}; };f"

または、これを使用して、コマンドラインからグローバル構成にこれを追加できます。

git config --global alias.rmbranch \
'!f(){ git branch -d ${1} && git push origin --delete ${1}; };f'

:(-d小文字のd)を使用している場合、ブランチはマージされた場合にのみ削除されます。削除を強制するには、-D(大文字のD)を使用する必要があります。


6
これは私が探していたものです。自分のシェル関数のエイリアスが機能せず(予期しないEOF)、理由を理解できませんでしたが、これはうまく機能します!唯一私が交換して行った変更&&;(時には唯一のローカルまたはリモートのみ存在する)ことが最初のコマンドがまだ実行されます第二に失敗してもなります。
user1021726

116

ローカルおよびリモートでブランチを削除するには

  • マスターブランチへのチェックアウト- git checkout master

  • リモートブランチを削除します- git push origin --delete <branch-name>

  • ローカルブランチを削除- git branch --delete <branch-name>


113

これを使用してこれを行うこともできます git remote prune origin

$ git remote prune origin
Pruning origin
URL: git@example.com/yourrepo.git
 * [pruned] origin/some-branchs

git branch -rリストからリモート追跡ブランチを枝刈りして削除します。


108

他の回答に加えて、私はよくgit_remote_branchツールを使用します。これは追加のインストールですが、リモートブランチを操作する便利な方法を提供します。この場合、削除するには:

grb delete branch

publishtrackコマンドも頻繁に使用していることがわかりました。


98

ワンライナーを削除するコマンドローカル、およびリモートの両方を

D=branch-name; git branch -D $D; git push origin :$D

または、以下のエイリアスを〜/ .gitconfigに追加します。使用法:git kill branch-name

[alias]
    kill = "!f(){ git branch -D \"$1\";  git push origin --delete \"$1\"; };f"

17
⚠️マージgit branch -Dされたことを確認せずにブランチを強制削除するため、スクリプトでは注意して使用してください。-d安全に使用してください。
シーザーソル2017年

94

ブランチを削除する

ブランチ "contact-form"に関する作業が完了し、それを "master"に既に統合していると仮定します。もう必要ないので、(ローカルで)削除できます。

$ git branch -d contact-form

そして、リモートブランチを削除するために:

git push origin --delete contact-form

87

リモートブランチを削除する

git push origin :<branchname>

ローカルブランチを削除

git branch -D <branchname>

ローカル分岐ステップを削除します。

  1. 別の支店へのチェックアウト
  2. ローカルブランチを削除

3
その後、リモートブランチを削除するには「git push」が必要ですか?
Samitha Chathuranga

いいえ@SamithaChathuranga、git push origin :<branchname>既に遠隔(したがってリモートブランチを削除する)に「empty`ブランチをプッシュ
のMichałSzajbe

86

単に言う:

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

これは、独自のブランチであれば機能します。しかし、リポジトリ内の不要なブランチ(一部は自分のものではない)をすべて刈り込んでいる場合は、十分ではありません
Kermit_ice_tea

83
git push origin --delete <branch Name>

より覚えやすい

git push origin :branchName

81

これで、GitHubデスクトップアプリケーションでそれを行うことができます。

アプリケーションを起動した後

  1. ブランチを含むプロジェクトをクリックします
  2. 削除するブランチに切り替えます

    ブランチの切り替え

  3. [ブランチ]メニューから[非公開...]を選択して、GitHubサーバーからブランチを削除します。

    ブランチを非公開

  4. 「ブランチ」メニューから「削除」「ブランチ名」「... 」を選択して、ローカルマシン(現在作業中のマシン)からブランチを削除します。

    ローカルブランチを削除


15
私は反対票を投じなかったが、私の考えはそれが実質的に役に立っていないということです。質問は明らかに、外部プログラムを使用せずにコマンドラインタイプの回答を求めることです。ここをクリックした場合、デスクトップ向けのgithubを探すことはおそらくないでしょう。
Daemedeor 2015年

12
@Daemedeor、私は同意しない。OPが質問した2010年、UIを使用する方法は存在せず、唯一のオプションはコマンドラインでした。コマンドラインのみのオプションが必要であることを示すには、質問またはタグcommand-line-interfaceでこのオプションを指定する必要がありますが、この場合は存在しません。
エリック、

3
リモートブランチを削除するためのgitコマンドはサックで、私はそれを忘れがちです(新旧両方)。幸い、オプションのあるGUIツールがあります。Git Gui、TortoiseGit、GitHub Desktopにはそれがあります-Git Extensionsにもこの機能があったらいいのにと思います。とにかく、私が覚えているのは、リモートブランチを削除する必要があるときにGit ExtensionsからGit Guiを起動することです。
vezenkov 2016年

81

とても簡単です:

リモートブランチを削除するには

git push -d origin <branch-name>

または

git push origin :<branch-name>

ローカルブランチを削除するには

git branch -D <branch-name>

2
リモートブランチを削除する--delete代わりに使用する必要がありました-d
ZakJ 2017

-doptionはのエイリアスで--deleteあり、--deletework が機能する場合は、orの代わりに-d使用できるブランチを強制的に削除する場合も機能します。-D-d--delete
Vivek Maru 2017

78

ローカルで削除するには -(通常)

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.

グラフ表示:

ここに画像の説明を入力してください


68

これは、リモートのブランチと同じ名前のタグがある場合は機能しません。

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

1
これは問題ありませんが、ブランチとタグに最初から同じ名前と同じ名前付けスキームで名前を付けるべきではありません。

3
まあ、私のシナリオでは、ブランチをタグに変換していて、タグにブランチと同じ名前を付けるのが理にかなっています。変換することで、私はAに分岐Bをマージし、分岐Bを削除した後、それはまだだけで簡単にタグB.チェックアウトすることで復元することができるように、最後は、タグBとの分岐Bにコミットタギング意味
グレッグ

53

他の多くの答えはエラー/警告につながります。たとえば、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

51

私はこの答えにググググするのにうんざりしたので、crizCraigが投稿た答えに同様のアプローチをとりました以前にた。

以下をBashプロファイルに追加しました:

function gitdelete(){
    git push origin --delete $1
    git branch -D $1
}

次に、ブランチが終了するたびに(masterたとえばにマージされます)、ターミナルで次のコマンドを実行します。

gitdelete my-branch-name

... ローカルmy-branch-nameからoriginも削除されます。


7
これを拡張し--delete "$@"-D "$@"代わりに$1複数のブランチで処理します。
kunl 2016年

3
git branch -d変更がマージされたことを確認するために、最初に(小文字の 'd'で)実行することをお勧めし、成功したらプッシュします(&&コマンドの間に置く)
bryn

49

実行する前に

git branch --delete <branch>

最初に、次のコマンドを実行して、リモートブランチの正確な名前を確認してください。

git ls-remote

これにより、値として正確に何を入力するかがわかります<branch>。(branch大文字と小文字が区別されます!)


46

使用する:

git push origin :bugfix  # Deletes remote branch
git branch -d bugfix     # Must delete local branch manually

本当に削除したい場合は、

git branch -D bugfix

削除されたリモートブランチをクリーンアップするには、次を実行します

git remote prune origin
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.