18976

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

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

$ 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ローカルとリモートの両方でブランチを正常に削除するには、どうすればよいですか?

4

41 に答える 41

23830

エグゼクティブサマリー

$ git push -d <remote_name> <branchname>
$ git branch -d <branchname>

注:ほとんどの場合、<remote_name>になりますorigin

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

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

$ git branch -d <branch_name>
$ git branch -D <branch_name>
  • この-dオプションはのエイリアスで--deleteあり、アップストリームブランチですでに完全にマージされている場合にのみブランチを削除します。
  • この-Dオプションはのエイリアスで--delete --forceあり、「マージされたステータスに関係なく」ブランチを削除します。[ソース:man git-branch
  • Git v2.3の時点で、git branch -d(削除)は-f(強制)フラグを尊重することを学習しました。
  • 現在選択されているブランチを削除しようとすると、エラーが発生します。

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

Git v1.7.0以降、を使用してリモートブランチを削除できます

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

覚えやすいかもしれません

$ git push <remote_name> :<branch_name>

これはGitv1.5.0で「リモートブランチまたはタグを削除するために」追加されました。

Git v2.8.0以降でgit pushは、-dオプションをのエイリアスとして使用することもできます--delete。したがって、インストールしたGitのバージョンによって、より簡単な構文を使用する必要があるか、より難しい構文を使用する必要があるかが決まります。

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

ScottChaconによるProGitの第3章から:

リモートブランチの削除

リモートブランチが終了したとします。たとえば、あなたと共同作業者が機能を完成させ、それをリモートのメインブランチ(または安定したコードラインが含まれるブランチ)にマージしたとします。やや鈍い構文を使用して、リモートブランチを削除できますgit push [remotename] :[branch]。サーバーからserver-fixブランチを削除する場合は、次のコマンドを実行します。

$ git push origin :serverfix
To git@github.com:schacon/simplegit.git
 - [deleted]         serverfix

ブーム。サーバー上にこれ以上ブランチはありません。このコマンドが必要になり、構文を忘れてしまう可能性があるため、このページをドッグイアすることをお勧めします。このコマンドを覚えておく方法はgit push [remotename] [localbranch]:[remotebranch]、少し前に説明した構文を思い出すことです。その[localbranch]部分を省くと、基本的に「私の側には何も取らず、そうする」と言っていることになります[remotebranch]。</ p>

私が発行git push origin: bugfixし、それは美しく機能しました。スコット・チャコンは正しかった—そのページを犬の耳にしたい(またはスタックオーバーフローでこれに答えることで事実上犬の耳にしたい)。

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

# Fetch changes from all remotes and locally delete 
# remote deleted branches/tags etc
# --prune will do the job :-;
git fetch --all --prune

変更を伝播します。

于 2010-01-05T01:13:55.193 に答える
3589

マシューの答えは、リモートブランチを削除するのに最適であり、説明にも感謝しますが、2つのコマンドを簡単に区別するために:

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

git branch -d {the_local_branch}-D代わりに、マージされたステータスをチェックせずにブランチを強制的に削除するために使用します)

サーバーからリモートブランチを削除するには:

git push origin --delete {the_remote_branch}

参照:Git:ブランチを削除します(ローカルまたはリモート)

于 2012-06-12T14:51:43.717 に答える
2283

短い答え

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

リモートブランチの削除

git push origin --delete <branch>  # Git version 1.7.0 or newer
git push origin -d <branch>        # Shorter version (Git 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 remote-tracking branches
git fetch <remote> -p      # Shorter

長い答え:削除する3つの異なるブランチがあります!

ローカルとリモートの両方でブランチを削除する場合は、3つの異なるブランチが関係していることに注意してください。

  1. ローカルブランチX
  2. リモートオリジンブランチX
  3. origin/Xリモートブランチを追跡するローカルリモート追跡ブランチX

3つのブランチの視覚化

使用された元のポスター:

git branch -rd origin/bugfix

これは、彼のローカルリモートトラッキングブランチ のみを削除しorigin/bugfix、の実際のリモートブランチは削除しませんでしbugfixorigin

図2

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

git push origin --delete bugfix

図3

追加の詳細

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

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

Xを使用してコマンドラインからリモートブランチを削除git push すると、ローカルのリモートトラッキングブランチも削除される ため、またはorigin/Xで廃止されたリモートトラッキングブランチを削除する必要はありません。ただし、とにかくやったとしても害はありません。git fetch --prunegit 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のウェブインターフェースから直接リモートブランチを削除した場合に発生する可能性があります。

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

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

1.6.6リリースノート(強調私のもの)からの関連する引用は次のとおりです。

学習した「gitfetch」 --all--multipleオプション、多くのリポジトリからフェッチを実行するオプション、および--prune古くなったリモート追跡ブランチを削除するオプション。 これらにより、「gitremoteupdate」と「gitremoteprune」の必要性が少なくなります(ただし、「remoteupdate」や「​​remoteprune」を削除する予定はありません)。

廃止されたリモートトラッキングブランチの上記の自動プルーニングの代替

または、廃止されたローカルリモートトラッキングブランチをプルーニングする代わりにgit fetch -p、またはフラグを使用してブランチを手動で削除するだけで、余分なネットワーク操作を回避できます。--remote-r

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

関連項目

于 2014-05-30T18:32:35.160 に答える
1653

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

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

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

説明:わかりました、ここで何が起こっているのか説明してください!

リモートブランチのみgit push origin --deleteを削除し、最後にブランチの名前を追加するだけで、削除と同時にリモートにプッシュされます...

また、ローカルブランチのみgit branch -Dを削除するだけです!...

-D--delete --forceマージされていない場合でもブランチを削除する(強制削除)を表しますが、ブランチのマージステータスに応じてエラーをスローするスタンドを使用することもできます-d--delete

また、手順を示すために以下の画像を作成します。

gitでリモートブランチとローカルブランチを削除します

于 2017-06-27T13:13:15.943 に答える
869

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

git push --delete origin serverfix

これはと同じことをします

git push origin :serverfix

しかし、覚えやすいかもしれません。

于 2011-10-27T22:22:53.767 に答える
498

それは非常に簡単です:

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

git push -d origin <branch-name>

または

git push origin :<branch-name>

-この構文でタグを削除することもできます

ローカルブランチを強制的に削除するには

git branch -D <branch-name>

注:git fetch --all --pruneリモートブランチを削除した後、他のマシンでを実行して、廃止されたトラッキングブランチを削除します。

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

git branch -D my-local-branch

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

git push origin :my-remote-branch

ヒント: 使用可能なすべてのブランチを表示したい場合はgit branch -a

リモートブランチだけを表示するには、git branch -r

于 2017-12-07T13:29:43.833 に答える
398

ヒント:を使用してブランチを削除する場合

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

于 2012-11-07T13:02:14.727 に答える
381

ブランチを削除する場合は、最初に、削除するブランチ以外のブランチにチェックアウトします。

git checkout other_than_branch_to_be_deleted

ローカルブランチの削除:

git branch -D branch_to_be_deleted

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

git push origin --delete branch_to_be_deleted
于 2014-10-07T13:52:09.033 に答える
278
git branch -D <name-of-branch>
git branch -D -r origin/<name-of-branch>
git push origin :<name-of-branch>
于 2013-10-24T17:36:23.437 に答える
239

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

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

git branch -d example

(ここexampleにブランチ名があります。)

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

git push origin :example
于 2015-02-15T15:20:32.127 に答える
216

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

git push --prune origin

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

git push --mirror

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

于 2012-11-18T06:11:34.703 に答える
181

私はBash設定で以下を使用します:

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

次に、電話をかけることができます:

git-shoot branchname
于 2013-04-02T22:11:24.003 に答える
145

ローカルで削除:

ローカルブランチを削除するには、次を使用できます。

git branch -d <branch_name>

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

git branch -D <branch_name>

リモートで削除:

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

git push origin :branchname

git push origin --delete branchname

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

于 2015-05-23T08:56:10.300 に答える
143

これらの両方の手順を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-01-15T19:05:13.507 に答える
141

2013年1月以降、GitHubのDelete branch[ブランチ]ページの各ブランチの横にボタンが追加されました。

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

于 2013-04-29T10:39:35.443 に答える
126

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

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

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

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

于 2016-01-03T21:08:43.173 に答える
120

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

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

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

于 2013-03-12T14:57:48.517 に答える
117

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

grb delete branch

publishtrackコマンドも頻繁に使用していることがわかりました。

于 2012-03-24T02:21:48.137 に答える
109

ローカルとリモートの両方を削除するワンライナーコマンド:

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"
于 2016-11-17T01:03:56.157 に答える
100

ブランチの削除

ブランチ「contact-form」の作業が完了し、すでに「master」に統合されていると仮定します。もう必要ないので、(ローカルで)削除できます。

$ git branch -d contact-form

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

git push origin --delete contact-form
于 2015-10-30T12:39:44.283 に答える
92

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

git push origin :<branchname>

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

git branch -D <branchname>

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

  1. 別の支店へのチェックアウト
  2. ローカルブランチを削除する
于 2015-12-31T09:22:52.883 に答える
90

簡単に言う:

git branch -d <branch-name>
git push origin :<branch-name>
于 2015-04-23T18:06:33.697 に答える
90

ローカルで削除するには-(通常)

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.

グラフ表示:

ここに画像の説明を入力してください

于 2017-06-23T06:42:48.983 に答える
87
git push origin --delete <branch Name>

覚えやすい

git push origin :branchName
于 2015-05-02T10:59:40.450 に答える
87

これで、 GitHubデスクトップアプリケーションでそれを行うことができます。

アプリケーションを起動した後

  1. ブランチを含むプロジェクトをクリックします
  2. 削除したいブランチに切り替えます

    スイッチングブランチ

  3. [ブランチ]メニューから[非公開...]を選択して、GitHubサーバーからブランチを削除します。

    ブランチを非公開

  4. [ブランチ]メニューから[削除]" branch_name "...'を選択して、ローカルマシン(現在作業しているマシン)からブランチを削除します。

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

于 2015-10-22T07:38:48.810 に答える
77

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

$ 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
于 2014-07-29T09:02:48.047 に答える
59

他の多くの回答はエラー/警告につながります。このアプローチは比較的確実ですが、たとえば、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
于 2013-11-27T03:04:55.370 に答える
57

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

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

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

master次に、ブランチ(たとえばにマージされた)が完了するたびに、ターミナルで次のコマンドを実行します。

gitdelete my-branch-name

...その後、ローカルだけでなくmy-branch-nameからも削除します。origin

于 2016-02-10T19:47:36.373 に答える
56

端末を使用した最新のドキュメントによると、次の方法で削除できます。

ローカルで削除:

git branch -D usermanagement

リモートロケーションで削除:

git push --delete origin usermanagement
于 2017-10-23T11:23:17.637 に答える
54

使用する:

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

削除してもよろしい場合は、

git branch -D bugfix

削除されたリモートブランチをクリーンアップするには、

git remote prune origin
于 2016-04-21T16:49:36.200 に答える
54

実行する前に

git branch --delete <branch>

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

git ls-remote

これにより、値に対して正確に何を入力するかがわかり<branch>ます。(branch大文字と小文字が区別されます!)

于 2016-05-20T21:42:57.783 に答える
46

これが他のすべての答えのマッシュアップです。Ruby 1.9.3以降が必要で、OSXでのみテストされています。

このファイルを呼び出し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
于 2013-11-19T21:02:31.420 に答える
41

次のエイリアスを.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"
于 2017-02-22T17:20:38.123 に答える
35

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

例を参照してください:https ://github.com/angular/angular.js/branches

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

私は一般的にコマンドラインを好みますが、このGitHubページには、最終更新日やユーザー前後のコミット数など、ブランチに関する詳細情報が表示されます。多数のブランチを処理する場合に便利です。

于 2016-02-04T23:34:40.957 に答える
32

良い答えはありますが、大量のブランチがある場合、ローカルおよびリモートでそれらを1つずつ削除するのは面倒な作業になります。このスクリプトを使用して、これらのタスクを自動化できます。

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ブランチを一度に削除する

于 2016-08-04T20:15:22.907 に答える
28

Git Bashを使用すると、次の操作を実行できます。

git branch --delete <branch>

または

-

GitHubデスクトップアプリケーションから、ブランチをチェックアウトしたら、[ブランチ]メニューストリップからローカルブランチを削除できます。

ここに画像の説明を入力してください

GitHubデスクトップアプリケーションを使用しておらず、ローカルソース管理にVisual StudioなどのIDEを使用している場合は、いくつかの簡単な手順を実行するだけです。

  1. 削除したいブランチ以外のブランチをチェックしてください。
  2. 削除するブランチを右クリックします。
  3. コンテキストメニューから[削除]オプションを選択します。

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

ここに画像の説明を入力してください

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

于 2017-02-12T21:25:12.960 に答える
20

.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
}
于 2017-09-25T19:20:00.423 に答える
12

最も柔軟な方法は、カスタムGitコマンドを使用することです。たとえば$PATH、名前の下のどこかに次のPythonスクリプトを作成し、git-rmbranch実行可能にします。

#!/usr/bin/env python3

import argparse
import subprocess
import sys

def rmbranch(branch_name, remote, force):
    try:
        print(subprocess.run(['git', 'branch', '-D' if force else '-d', branch_name],
                             capture_output=True, check=True, encoding='utf-8').stdout, end='')
    except subprocess.CalledProcessError as exc:
        print(exc.stderr.replace(f'git branch -D {branch_name}', f'git rmbranch -f {branch_name}'), end='')
        return exc.returncode

    return subprocess.run(['git', 'push', remote, '--delete', branch_name]).returncode    

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='Delete a Git branch locally and remotely.')
    parser.add_argument('-r', '--remote', default='origin', help="The remote name (defaults to 'origin')")
    parser.add_argument('-f', '--force', action='store_true', help='Force deletion of not fully merged branches')
    parser.add_argument('branch_name', help='The branch name')
    args = parser.parse_args()

    sys.exit(rmbranch(args.branch_name, args.remote, args.force))

次にgit rmbranch -h、使用情報が表示されます。

usage: git-rmbranch [-h] [-r REMOTE] [-f] branch_name

Delete a Git branch locally and remotely.

positional arguments:
  branch_name           The branch name

optional arguments:
  -h, --help            show this help message and exit
  -r REMOTE, --remote REMOTE
                        The remote name (defaults to 'origin')
  -f, --force           Force deletion of not fully merged branches

git push origin --delete <branch_name>また、ローカルのリモート追跡ブランチ(origin/<branch_name>デフォルト)も削除されるため、気にする必要はありません。

PSこのGitコマンドの最新バージョンはここにあります。コメントや提案は大歓迎です。

于 2019-09-03T13:23:00.813 に答える
7

最初のいくつかの方法は私にはうまくいきませんでした。

次のブランチとリモートブランチがあるとします。

Local : Test_Branch
Remote: remotes/origin/feature/Test_FE

削除するリモートブランチを追跡するために、ローカルブランチのアップストリームを正しく設定します。

git branch --set-upstream-to=remotes/origin/feature/Test_FE Test_Branch

次に、リモートブランチを削除するには、これを実行します

git push origin --delete Test_Branch

次に、ローカルブランチを削除するには、次のコマンドを実行します

git branch -D Test_Branch

それでおしまい。

于 2021-06-04T10:28:05.680 に答える
6

CoolAJ86apenwarrの答えはどちらも非常に似ています。サブモジュールの交換をサポートするためのより良いアプローチを理解しようとして、2つの間を行ったり来たりしました。以下はそれらの組み合わせです。

まず、GitBashを分割するGitリポジトリのルートに移動します。ここでの私の例では、~/Documents/OriginalRepo (master)

# Move the folder at prefix to a new branch
git subtree split --prefix=SubFolderName/FolderToBeNewRepo --branch=to-be-new-repo

# Create a new repository out of the newly made branch
mkdir ~/Documents/NewRepo
pushd ~/Documents/NewRepo
git init
git pull ~/Documents/OriginalRepo to-be-new-repo

# Upload the new repository to a place that should be referenced for submodules
git remote add origin git@github.com:myUsername/newRepo.git
git push -u origin master
popd

# Replace the folder with a submodule
git rm -rf ./SubFolderName/FolderToBeNewRepo
git submodule add git@github.com:myUsername/newRepo.git SubFolderName/FolderToBeNewRepo
git branch --delete --force to-be-new-repo

以下は、カスタマイズ可能な名前を置き換え、代わりにHTTPSを使用した上記のコピーです。ルートフォルダは現在~/Documents/_Shawn/UnityProjects/SoProject (master)

# Move the folder at prefix to a new branch
git subtree split --prefix=Assets/SoArchitecture --branch=so-package

# Create a new repository out of the newly made branch
mkdir ~/Documents/_Shawn/UnityProjects/SoArchitecture
pushd ~/Documents/_Shawn/UnityProjects/SoArchitecture
git init
git pull ~/Documents/_Shawn/UnityProjects/SoProject so-package

# Upload the new repository to a place that should be referenced for submodules
git remote add origin https://github.com/Feddas/SoArchitecture.git
git push -u origin master
popd

# Replace the folder with a submodule
git rm -rf ./Assets/SoArchitecture
git submodule add https://github.com/Feddas/SoArchitecture.git
git branch --delete --force so-package
于 2019-02-18T20:24:52.347 に答える
4

ここで、globまたは任意のブランチ名に対応するリモートブランチを削除できます。

git branch -r --list "origin/*" | xargs git branch -r -D
于 2021-08-30T13:26:35.160 に答える