scm - git remote head branch




ローカルとリモートの両方でGitブランチを削除するには? (20)

エグゼクティブサマリー

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

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

ローカルブランチの削除

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

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

注意: -dオプションは--deleteエイリアスです。これは、すでにブランチが上流ブランチで完全にマージされている場合にのみブランチを削除します。 --delete --forceエイリアスである-D使用することもできます。これは、 "マージされたステータスに関係なく"ブランチを削除します。 [出典: man git-branch ]

リモートブランチの削除[2019年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エイリアスとして使うこともでき--delete

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

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

Scott ChaconによるPro Gitの第3章から:

リモートブランチの削除

リモートブランチで作業が完了したとします。つまり、あなたと共同作業者がフィーチャーを完成し、それをリモートのマスターブランチ(または安定したコードラインが入っているブランチ)にマージしたとします。 かなり鈍い構文のgit push [remotename] :[branch]を使用して、リモートブランチを削除できます。 serverfixブランチをサーバから削除するには、次のコマンドを実行します。

$ git push origin :serverfix
To [email protected]:schacon/simplegit.git
 - [deleted]         serverfix

ブーム。 あなたのサーバー上にブランチはもうありません。 あなたはこのコマンドを必要とするので、このページをdog-earにするとよいでしょう。構文を忘れる可能性があります。 このコマンドを覚える方法は、 git push [remotename] [localbranch]:[remotebranch]構文をgit push [remotename] [localbranch]:[remotebranch]ことです。 [localbranch]部分を離れると、基本的には「私の側には何も持っておらず、それを[localbranch]にする」ということです。

私はgit push origin :bugfixを出しましたgit push origin :bugfixとそれはきれいに働きました。 Scott Chaconは正しかった - 私はそのページ(あるいはStack Overflowでこれに答えることによって事実上犬の耳)を耳にしたい。

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

git fetch --all --prune

変更を伝播する。

私はGitHub上のローカルプロジェクトとリモートプロジェクトフォークの両方でブランチを削除したいと思いGitHub

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

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

ローカルとGitHubの両方でremotes/origin/bugfixブランチを正常に削除するには、何が必要なのですか?


短い答え

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

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

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

使用された元のポスター

git branch -rd origin/bugfix

これはローカルのリモート追跡ブランチの origin/bugfixだけを削除し、実際のリモートブランチのbugfixoriginはありません。

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

git push origin --delete bugfix

追加の詳細

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

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

git push 使用してコマンドラインからリモートブランチX削除すると、ローカルリモートトラッキングブランチの origin/X も削除されるので、不要なリモートトラッキングブランチをgit fetch --pruneまたはgit fetch -pプルーニングする必要はありませんとにかくあなたがそれをしたら、それは傷つけませんが、 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のWebインターフェイスから直接リモートブランチを削除した場合に発生します。

これらの廃止されたリモートトラッキングブランチ(Gitバージョン1.6.6以降)を削除する典型的な方法は、単に--pruneまたは-p --pruneしてgit fetchを実行することです。 これにより、リモートに存在しなくなったリモートブランチの不要なローカルリモート追跡ブランチがすべて削除されます

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

ここに1.6.6リリースノート (重点鉱山)の関連する引用があります:

"git fetch"は 、 - 多くのリポジトリからフェッチを実行するための--all--multipleオプション、 - 失効したリモート追跡ブランチを削除する--pruneオプションを--pruneました。 これらは、 "git remote update"と "git remote prune"をあまり必要としません(しかし、 "remote update"も "prune"も削除する計画はありません)。

旧式の遠隔追跡枝の自動枝刈りの代わり

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

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

関連項目


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'

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


2013年1月以降、GitHubには、 [支店 ]ページの各支店の横に[支店削除]ボタンが含まれています。

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


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

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

これはgit branch -rリストからリモートトラッキングブランチを削除して削除します。


1つのライナーコマンドがローカルとリモートの両方を削除します:

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 branch_name 

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

git branch -D branch_name

リモートで削除:

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

git push origin :branchname  

git push origin --delete branchname 

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


これで、 GitHub Desktopアプリでこれを行うことができます。

アプリを起動した後

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

これは簡単です:次のコマンドを実行してください:

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

git branch -d example

(ここではブランチ名)

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

git push origin :example

その他の答えの多くはエラー/警告につながります。 このアプローチは比較的愚かではありませんが、たとえばsome_other_branchに完全にマージされていない場合は、 git branch -D branch_to_deleteが必要な場合があります。

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

ヒント:次のコマンドを使用してブランチを削除すると

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 master

  • あなたのリモートブランチを削除する - git push origin --delete <branch-name>

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


マシューの答えは遠隔地の枝を取り除くのには素晴らしいです。私は説明に感謝しますが、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 : https://makandracards.com/makandra/621-git-delete-a-branch-local-or-remote


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

git push origin :<branchname>

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

git branch -D <branchname>

ローカルブランチステップを削除する:

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

他のすべての答えのマッシュアップ。 OS X上でのみテストされたRuby 1.9.3以降が必要です。

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

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

grb delete branch

私は、 publishtrackコマンドも頻繁に使用することがわかりました。


実行前

git branch --delete <branch>

次のコマンドを実行して、リモートブランチのEXACT名が何であるかを最初に確認してください。

git ls-remote

<branch>値を正確に入力する必要があります。 ( branchは大文字小文字を区別します!)


私はBash設定で次のものを使用します:

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

それから、あなたは電話することができます:

git-shoot branchname

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

git push origin --delete branchName

より覚えやすい

git push origin :branchName






git-remote