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

StackOverflow https://stackoverflow.com/questions/2003505

  •  18-09-2019
  •  | 
  •  

質問

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

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

$ 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 ローカルとリモートの両方にブランチしますか?

役に立ちましたか?

解決

エグゼクティブサマリー

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

ほとんどの場合、リモート名がoriginであることに注意してください。

削除ローカルブランチ

次ののローカルのブランチ使用1を削除するには

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

注: -dオプションは、それがすでに完全にその上流のブランチにマージされている場合のみブランチを削除--deleteの別名です。また、ブランチを削除した、-Dの別名である--delete --forceを、使用することができます「にかかわらず、そのマージされた状態の。」 [出典:man git-branch]

[8-9月 - 2017年に更新]リモートブランチを削除します。

の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のバージョンでは、あなたがより簡単か難しい構文を使用する必要があるかどうかが決まります。

[5-JAN-2010からオリジナル回答]リモートブランチを削除

のプロGitのの<の第3章から/>スコット・チャコンによるます:

  

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

     

あなたがリモートブランチで行われていると仮定 - あなたとあなたの協力者は、機能を終了していると、リモートのmasterブランチ(または何支店あなたの安定したコード行が入っている)にそれを合併している、と言います。あなたはかなり鈍角構文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を発行し、それが美しく働きました。スコット・チャコンは右、私がでそのページの犬の耳(または事実上の犬の耳になるでしょうし)スタックオーバーフロー上でこれを答えます。

そして、あなたが他のマシン上でこれを実行する必要があります。

git fetch --all --prune

変更を伝播します。

他のヒント

マシューの答え 取り除くのに最適です リモート ブランチの説明もありがたく思いますが、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

短い答え

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

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

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

Visualization of 3 branches

使用したオリジナルポスター

git branch -rd origin/bugfix

それは彼のものを削除しただけです ローカルのリモート追跡ブランチ origin/bugfix, 、実際のリモートブランチではありません bugfix の上 origin.

Diagram 2

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

git push origin --delete bugfix

Diagram 3

さらなる詳細

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

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

リモートブランチを削除すると、 X コマンドラインから 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

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

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

これらの廃止されたリモート追跡ブランチ (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 リモート・プルーンの必要性は低い。 update "も "remote prune "もない)。

古いリモート追跡ブランチに対する上記の自動プルーニングの代替手段

あるいは、古くなったローカルのリモート追跡ブランチを削除する代わりに、 git fetch -p, 余分なネットワーク操作を避けることができます ブランチを手動で削除するだけで、 --remote または -r フラグ:

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

関連項目

ブランチを削除する手順は次のとおりです。

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

git push origin --delete <your_branch> 

削除するには、 地方支店, 、 あなたが持っている 三つの方法:

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

また、リモートブランチを削除するには、次の使用することができます。

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 checkout other_than_branch_to_be_deleted

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

git branch -D branch_to_be_deleted

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

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

これは簡単です:ちょうど次のコマンドを実行します:

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

git branch -d example

(ここでexampleはブランチ名である)

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

git push origin :example

別のアプローチは次のとおりです:-

git push --prune origin

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

git push --mirror

これにより、リモート リポジトリがリポジトリのローカル コピーのように見えるようになります (ローカル ヘッド、リモート、およびタグはリモートにミラ​​ーリングされます)。

私はバッシュの設定:

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

次に、あなたが呼び出すことができます:

git-shoot branchname

2013年1月以来、GitHubのは、あなたの "ブランチ" ページ内の各支店の隣にブランチを削除ボタンを含めます。

関連ブログ記事:作成と削除枝

をローカルに削除します:

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

git branch -d <branch_name> 

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

git branch -D <branch_name>

をリモートで削除します。

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

git push origin :branchname  

git push origin --delete branchname 

私はそれがより直感的であるとして、あなたが第二の方法を使用することをお勧めします。

あなたは、単一のコマンドで両方のこれらのステップを完了したい場合は、あなたがあなたの~/.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)を使用する必要があります。

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

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

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

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

また、この使用git remote prune originを行うことができます。

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

これはプルーンとgit branch -rリストからリモート追跡ブランチを削除します。

他の回答に加えて、私は多くの場合、 git_remote_branch のツールを使用します。これは、インストールの余分なのですが、それはあなたのリモートブランチと対話するための便利な方法を取得します。この場合は、削除します:

grb delete branch

私は、私もかなり頻繁

publishtrackコマンドを使用することを見つけます

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

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"

削除支店

  

で行われるのは、ブランチ「コンタクトフォーム」に私たちの仕事を仮定しようと、私たちはすでに「マスター」にそれを統合しました。私たちはもうそれを必要としないので、我々はそれを削除することができます(ローカル):

$ git branch -d contact-form

とリモートブランチを削除するためのます:

git push origin --delete contact-form

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

git push origin :<branchname>

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

git branch -D <branchname>

ローカルブランチステップを削除します。

  1. 別のブランチにチェックアウトする
  2. ローカルブランチを削除する

単に言います:

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

タグよりも覚えやすいです
git push origin :branchName

今、あなたはそれを行うことができます GitHub デスクトップ アプリ。

アプリ起動後

  1. ブランチを含むプロジェクトをクリックします
  2. 削除したいブランチに切り替えます switching branch
  3. 「ブランチ」メニューから「非公開...」を選択し、GitHub サーバーからブランチを削除します。 unpublish branch
  4. 「ブランチ」メニューから「削除」を選択します。支店名「...」、ローカル マシン (つまり、現在作業しているマシン) からブランチを削除します。 delete local branch

をローカルで削除するには - (ノーマル)、

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.

をグラフィカルな表現、

 loading=

"ここに画像の説明を入力します。

のあなたは、リモートのブランチと同じ名前のタグを持っている場合、これは動作しません。

$ 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

他の回答の多くは、エラー/警告につながります。それは完全に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

私はこの答えをグーグルの病気になったので、私は同様のアプローチを取りました href="https://stackoverflow.com/a/15775364/551436">に答えをを掲載することをます。

は、私のバッシュのプロファイルに以下を追加します:

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

その後、私はブランチで行わよたびに(例えば、masterにマージ)私は自分の端末で次のように実行します:

gitdelete my-branch-name

...その後my-branch-nameから、ならびにローカルとしてoriginを削除します。

実行する前に、

git branch --delete <branch>

あなたがリモートブランチのEXACT名前は実行しているものを最初に決定することを確認します:

git ls-remote

このは<branch>値のために丁度入るように何を教えてくれます。 (branchは大文字と小文字が区別されます!)

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

あなたがそれを削除してもよろしい場合は、実行

git branch -D bugfix

今すぐ削除リモートブランチをクリーンアップするために実行

git remote prune origin

他のすべての答えのマッシュアップ。 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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top