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つの異なるブランチがあることに注意してください。
- ローカルブランチ
X
- リモートの起点ブランチ
X
- リモートブランチ
X
追跡するローカルリモートトラッキングブランチのorigin/X
使用された元のポスター
git branch -rd origin/bugfix
これはローカルのリモート追跡ブランチの origin/bugfix
だけを削除し、実際のリモートブランチのbugfix
はorigin
はありません。
その実際のリモートブランチを削除するには、
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アプリでこれを行うことができます。
アプリを起動した後
これは簡単です:次のコマンドを実行してください:
ローカルとリモートの両方で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>
ローカルブランチステップを削除する:
- 別の支店へのチェックアウト
- ローカルブランチを削除する
他のすべての答えのマッシュアップ。 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
私は、 publish
とtrack
コマンドも頻繁に使用することがわかりました。
実行前
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