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

2010年01月05日に質問されました。  ·  閲覧回数 8.5M回  ·  ソース

Matthew Rankin picture
2010年01月05日

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

リモートブランチを削除しようとして失敗しました

$ 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ブランチを正常に削除するには、どうすればよいですか?

回答

Matthew Rankin picture
2010年01月05日
21979

エグゼクティブサマリー

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

これはGitv1.5.0で「リモートブランチまたはタグを削除するために」追加されました。

Git v2.8.0以降--deleteエイリアスとして-dオプションを指定してgit pushを使用することもできます。

したがって、インストールしたGitのバージョンによって、より簡単な構文を使用する必要があるか、より難しい構文を使用する必要があるかが決まります。

リモートブランチを削除する[2010年1月5日からの元の回答]

ScottChaconによるProGitの第3章から:

リモートブランチの削除

リモートブランチが終了したとします。たとえば、あなたと共同編集者が機能を終了し、それをリモートのマスターブランチ(または安定したコードラインが含まれるブランチ)にマージしたとします。 やや鈍い構文git push [remotename] :[branch]を使用して、リモートブランチを削除できます。 サーバーからserver-fixブランチを削除する場合は、以下を実行します。

$ 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でこれに答えることで事実上犬の耳に)。

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

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

変更を伝播します。

Eric Brotto picture
2012年06月12日
3383

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

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

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

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

git push origin --delete {the_remote_branch}

参照: Git:ブランチを削除します(ローカルまたはリモート)

user456814 picture
2014年05月31日
2116

短い答え

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

リモートブランチの削除

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. リモートブランチX追跡するローカルリモート追跡ブランチorigin/X X

Visualization of three branches

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

git branch -rd origin/bugfix

これは、ローカルのリモート追跡ブランチorigin/bugfixのみを削除し、 bugfixは削除しませんorigin

Diagram 2

その実際のリモートブランチを削除するには、

git push origin --delete bugfix

Diagram 3

追加の詳細

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

リモートブランチを削除するためにプッシュすると、リモートトラッキングブランチも削除されます

git push使用してコマンドラインからリモートブランチX削除すると、ローカルリモート追跡ブランチ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リリースノートからの関連する引用は次のとおりです(私の強調):

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

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

または、廃止されたローカルリモートトラッキングブランチをgit fetch -pで削除する代わりに、 --remoteまたは-rてブランチを手動で削除するだけで、余分なネットワーク操作を回避できます。 -rフラグ:

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

関連項目

Alireza picture
2017年06月27日
1573

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

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

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

説明: OK、ここで何が起こっているのか説明してください!

git push origin --delete実行してリモートブランチのみリモートにプッシュされます...

また、 git branch -Dは、ローカルブランチのみを削除する

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

また、手順を示すために以下

Delete a remote and local branch in git

pagetribe picture
2011年10月28日
818

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

git push --delete origin serverfix

これはと同じことをします

git push origin :serverfix

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

pfrenssen picture
2012年11月07日
380

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

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

Praveen Hiremath picture
2014年10月07日
371

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

git checkout other_than_branch_to_be_deleted

ローカルブランチの削除:

git branch -D branch_to_be_deleted

リモートブランチの削除:

git push origin --delete branch_to_be_deleted
Felipe picture
2013年10月25日
269
git branch -D <name-of-branch>
git branch -D -r origin/<name-of-branch>
git push origin :<name-of-branch>
Syeful Islam picture
2015年02月15日
230

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

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

git branch -d example

(ここでexampleはブランチ名です。)

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

git push origin :example
Vivek Maru picture
2017年12月07日
217

それは非常に簡単です:

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

git push -d origin <branch-name>

または

git push origin :<branch-name>

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

git branch -D <branch-name>