web-dev-qa-db-ja.com

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

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

リモートブランチの削除に失敗しました。

$ 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ブランチを正常に削除するにはどうしたらよいでしょうか。

15136
Matthew Rankin

エグゼクティブサマリー

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

ほとんどの場合、リモート名はOriginです。

ローカルブランチを削除

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

$ 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 以降、remoteブランチを削除することができます。

$ 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 [email protected]:schacon/simplegit.git
 - [deleted]         serverfix

ブーム。サーバーにこれ以上ブランチはありません。あなたはこのコマンドを必要とするでしょう、そしてあなたはたぶん構文を忘れるかもしれないので、あなたはこのページをわざわざ書きたくなるかもしれません。このコマンドを思い出すための方法は、少し前に行ったgit Push [remotename] [localbranch]:[remotebranch]構文を思い出すことです。 [localbranch]の部分を省略した場合、基本的には「私の側では何もしないで[remotebranch]にする」と言っています。

私はgit Push Origin :bugfixを発行しました、そしてそれは美しく働きました。 Scott Chaconは正しかった - 私は 犬の耳 そのページ(またはStack Overflowでこれに答えることによって事実上犬の耳)をしたいと思うだろう。

それからあなたは他のマシンでこれを実行するべきです

git fetch --all --Prune

変更を伝播する.

18919
Matthew Rankin

Matthewの答えはremoteブランチを削除するのに最適です、そして私も説明を感謝します、しかし2つのコマンドの間の簡単な区別をするために:

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

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

3016
Eric Brotto

短い答え

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

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

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

Visualization of 3 branches

オリジナルのポスターを使用

git branch -rd Origin/bugfix

これは彼のlocalリモートトラッキングブランチ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

廃止されたローカルのリモートトラッキングブランチOrigin/Xを刈り込む

リモートブランチXをコマンドラインから削除しなかった場合(上記のように)、ローカルレポジトリには(現在は使用されていない)リモートトラッキングブランチOrigin/Xがまだ含まれています。たとえば、GitHubのWebインターフェースから直接リモートブランチを削除した場合などに起こります。

(Gitバージョン1.6.6以降の)これらの時代遅れのリモートトラッキングブランチを削除する典型的な方法は、単にgit fetchまたはもっと短い--Pruneを付けて-pを実行することです。 remoteに​​もう存在しないリモートブランチのために使われなくなったローカルのリモートトラッキングブランチをすべて削除することに注意してください:

git fetch Origin --Prune
git fetch Origin -p # Shorter

これは 1.6.6リリースノート からの関連する引用です。

"git fetch"は多くのリポジトリからfetchを実行するために--all--multipleoptionsを学習し、古くなったリモートトラッキングブランチを削除するために--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

参照

1743
user456814

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

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

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は、単にローカルブランチを削除しますONLY!...

-D--delete --forceを表し、マージされていない場合でもブランチを削除します(強制削除)が、-dを使用して--deleteを表すこともできます。

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

delete a remote and local branch in git

1391
Alireza

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

git Push --delete Origin serverfix

これは同じことをします

git Push Origin :serverfix

しかし覚えておくほうが簡単かもしれません。

746
pagetribe

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

git checkout other_than_branch_to_be_deleted

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

git branch -D branch_to_be_deleted

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

git Push Origin --delete branch_to_be_deleted
357

ヒント:を使ってブランチを削除するとき

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

352
pfrenssen
git branch -D <name-of-branch>
git branch -D -r Origin/<name-of-branch>
git Push Origin :<name-of-branch>
256
Felipe

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

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

git branch -d example

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

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

git Push Origin :example
220
Syeful Islam

別のアプローチは: -

git Push --Prune Origin

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

git Push --mirror

リモートリポジトリをリポジトリのローカルコピーのように効果的に表示します(ローカルヘッド、リモート、タグはリモートでミラーリングされます)。

191
imanuelcostigan

私は Bash の設定で以下を使います。

alias git-shoot="git Push Origin --delete"

それからあなたは呼び出すことができます:

git-shoot branchname
160
crizCraig

2013年1月以降、GitHubには Delete branch [ブランチ]ページの各ブランチの横にあるボタンをクリックします。

関連するブログ記事: ブランチの作成と削除

128
Nacho Coloma

これら2つのステップを1つのコマンドで実行したい場合は、以下を~/.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'

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

119
Ryan Kohn

ローカルで削除します:

ローカルブランチを削除するには、次のようにします。

git branch -d <branch_name> 

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

git branch -D <branch_name>

リモートで削除します:

2つの選択肢があります。

git Push Origin :branchname  

git Push Origin --delete branchname 

直感的にわかるように、2番目の方法を使用することをお勧めします。

118
Rahul Gupta

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

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

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

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

111
mfathy00

git remote Prune Originを使ってこれを行うこともできます。

$ git remote Prune Origin
Pruning Origin
URL: [email protected]/yourrepo.git
 * [pruned] Origin/some-branchs

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

106
nickleefly

他の答えに加えて、私はしばしば git_remote_branch というツールを使います。これは追加インストールですが、リモートブランチと対話するための便利な方法です。この場合、削除するには:

grb delete branch

私はpublishtrackコマンドも頻繁に使っています

102
u2622

ワンライナー command delete ローカルとリモートの両方

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"
92
Vinnie James

ブランチを削除する

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

$ git branch -d contact-form

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

git Push Origin --delete contact-form
90
Ulysses Alves

リモートブランチを削除

git Push Origin :<branchname>

ローカルブランチを削除

git branch -D <branchname>

ローカルブランチの手順を削除します。

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

簡単に言うと:

git branch -d <branch-name>
git Push Origin :<branch-name>
85
piyushmandovra

GitHub Desktop アプリを使用して、これを実行できます。

アプリを起動した後

  1. ブランチを含むプロジェクトをクリックします
  2. 削除するブランチに切り替えます switching branch
  3. [ブランチ]メニューから[非公開]を選択して、GitHubサーバーからブランチを削除します。 unpublish branch
  4. 「Branch」メニューから「Delete "branch_name" ...」を選択して、ローカルマシンからブランチを削除します(別名:現在作業中のマシン) delete local branch
79
Eric
git Push Origin --delete <branch Name>

より覚えやすい

git Push Origin :branchName
78
Smila

ローカルで削除するには - (標準)、

git branch -d my_branch

あなたのブランチがリベース/マージの進捗状況でそれが正しく行われなかった場合、エラーRebase/Merge in progressが表示されるので、その場合はブランチを削除できません。

つまり、リベースやマージを解決する必要がある場合、そうでなければ強制的にDeleteを実行できます。

git branch -D my_branch

Remote:で削除する場合

git Push --delete Origin my_branch

を使って同じことができます

git Push Origin :my_branch   # easy to remember both will do the same.

グラフ表示、

enter image description here

73

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

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

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

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

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

function gitdelete(){
    git Push Origin --delete $1
    git branch -D $1
}

それから(例えばmasterにマージされた)ブランチを使い終えるたびに、私は自分の端末で以下を実行します。

gitdelete my-branch-name

...これはその後、Originからmy-branch-nameをローカルでも削除します。

49
arthurakay

実行前

git branch --delete <branch>

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

git ls-remote

これは<branch>の値に正確に何を入力すればよいかを教えてくれます。 (branchは大文字と小文字を区別します!)

45
joey
git Push Origin :bugfix  # Deletes remote branch
git branch -d bugfix     # Must delete local branch manually

本当に削除したい場合は、実行してください

git branch -D bugfix

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

git remote Prune Origin
44
user

他のすべての答えのマッシュアップ。 OS XではRuby 1.9.3+が必要、テスト済みは only

このファイルを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
43
Dan Rosenstark

.gitconfigファイルに次のエイリアスを追加しました。これにより、ブランチ名を指定してもしなくてもブランチを削除できます。引数が渡されない場合、ブランチ名は現在のブランチにデフォルト設定されます。

[alias]
    branch-name = rev-parse --abbrev-ref HEAD     

    rm-remote-branch = !"f() { branch=${1-$(git branch-name)}; git Push Origin :$branch; }; f"
    rm-local-branch = !"f() { branch=${1-$(git branch-name)}; git checkout master; git branch -d $branch; }; f"
    rm-branch-fully = !"f() { branch=${1-$(git branch-name)}; git rm-local-branch $branch; git rm-remote-branch $branch; }; f"
39
Jared Knipp

リモートブランチを削除するためのコマンドラインの代替オプションはGitHubブランチページです。

例: https://github.com/angular/angular.js/branches

GitHubリポジトリのCode-> Branchesページにあります。

私は通常自分でコマンドラインを使いますが、これはGitHubページに詳細情報が表示されますブランチに関する最終更新日とユーザー、およびコミット数と後ろ。多数のブランチを扱うときに役立ちます。

32
Bradley Flood

私も同様の問題を抱えていました、そしてこれはうまくいくようです:これは地方支店を削除します。 git branch -d the_local_branch

これはリモートブランチgit Push Origin :the_remote_branchを削除します

出典:マカンドラカード

30
Srijan Karki

良い答えがありますが、あなたがたくさんの枝を持っている場合、それらを局所的にそして一つずつ一つずつ削除するのは面倒な作業でしょう。このスクリプトを使用してこの作業を自動化できます。

branch_not_delete=( "master" "develop" "our-branch-1" "our-branch-2")


for branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master`; do

    # delete prefix remotes/Origin/ from branch name
    branch_name="$(awk '{gsub("remotes/Origin/", "");print}' <<< $branch)"

    if ! [[ " ${branch_not_delete[*]} " == *" $branch_name "* ]]; then
        # delete branch remotly and locally
        git Push Origin :$branch_name
    fi
done 
  • 削除したくないブランチを一覧表示する
  • リモートブランチを繰り返し、それらが「保存リスト」にない場合は削除しました。

出典: 一度にgit-branchesを削除

28
levi

GitBashを使用すると、次を実行できます。

git branch --delete <branch>

OR

GitHubデスクトップアプリからブランチをチェックアウトしたら、Branchメニューストリップを使用してLocalブランチを削除できます:

enter image description here

GitHubデスクトップアプリを使用していないで、ローカルソース管理にVisual StudioのようなIDEを使用している場合、いくつかの簡単な手順を実行する必要があります。

  1. 削除するブランチ以外のブランチをチェックアウトします。
  2. 削除するブランチを右クリックします。
  3. コンテキストメニューからDeleteオプションを選択します。

次に、GitHubアカウントにオンラインでログインしたら、リポジトリに移動し、すべてのブランチタブをクリックします。そこから、削除したいブランチの名前の右側にある小さなゴミ箱アイコンをクリックするだけです。

enter image description here

*注意してください-ブランチが公開されていない場合、オンラインリポジトリから削除しようとする必要はありません。

23
Uchiha Itachi

.bash_aliasesファイルに次の便利な関数を作成しました。

git-delete-branch() 
{ 
    if [[ -n $1 ]]; then
        git checkout master > /dev/null;
        branch_name="$1";
        echo "Deleting local $branch_name branch...";
        git branch -D "$branch_name";
        echo "Deleting remote $branch_name branch...";
        git Push Origin --delete "$branch_name";
        git remote Prune Origin;
        echo "Your current branches are:";
        git branch -a;
    else
        echo "Usage: git-delete-branch <branch_name>";
    fi
}
19

端末を使用している最新の資料によると、次のように削除できます。

ローカルで削除:

git branch -D usermanagement

離れた場所で削除:

git Push --delete Origin usermanagement
19
KARTHIKEYAN.A

とてもシンプル

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

git Push -d Origin <branch-name>

OR

git Push Origin :<branch-name>

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

git branch -D <branch-name>
15
Vivek Maru