Git ブランチをローカルおよびリモートで削除するにはどうすればよいですか?
-
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つの異なるブランチが関係しています:
- 地元の支店
X
. - リモートオリジンブランチ
X
. - ローカルのリモート追跡ブランチ
origin/X
リモートブランチを追跡するX
.
使用したオリジナルポスター
git branch -rd origin/bugfix
それは彼のものを削除しただけです ローカルのリモート追跡ブランチ origin/bugfix
, 、実際のリモートブランチではありません bugfix
の上 origin
.
実際のリモート ブランチを削除するには, 、必要です
git push origin --delete bugfix
さらなる詳細
次のセクションでは、リモート ブランチおよびリモート追跡ブランチを削除するときに考慮すべき追加の詳細について説明します。
リモート ブランチの削除をプッシュすると、リモート追跡ブランチも削除されます
リモートブランチを削除すると、 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
ブランチのマージステータスに応じてエラーがスローされます...
私も作成します 下の画像 手順を示すには:
また、リモートブランチを削除するには、次の使用することができます。
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
これにより、リモート リポジトリがリポジトリのローカル コピーのように見えるようになります (ローカル ヘッド、リモート、およびタグはリモートにミラーリングされます)。
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
私は、私もかなり頻繁
publish
とtrack
コマンドを使用することを見つけます のワンライナーのコマンドをローカル、およびリモートの両方のを削除の
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>
ローカルブランチステップを削除します。
- 別のブランチにチェックアウトする
- ローカルブランチを削除する
単に言います:
git branch -d <branch-name>
git push origin :<branch-name>
git push origin --delete <branch Name>
タグよりも覚えやすいです
git push origin :branchName
今、あなたはそれを行うことができます GitHub デスクトップ アプリ。
アプリ起動後
をローカルで削除するには - (ノーマル)、の
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.
をグラフィカルな表現、の
"ここに画像の説明を入力します。の のあなたは、リモートのブランチと同じ名前のタグを持っている場合、これは動作しません。のの
を$ 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