it-swarm-eu.dev

Jak lze lokálně a vzdáleně odstranit pobočku Git?

Chci odstranit pobočku lokálně i vzdáleně.

Selhalo pokusy o odstranění vzdálené větve:

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

Co mám dělat jinak, abych úspěšně odstranil větev remotes/Origin/bugfix lokálně i vzdáleně?

15136
Matthew Rankin

Shrnutí

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

Všimněte si, že ve většině případů je vzdálené jméno Origin.

Smazat místní pobočku

K odstranění větve local použijte jednu z následujících možností:

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

Poznámka: Volba -d je alias pro --delete, který pouze smaže větev, pokud již byla plně sloučena do své větve. Můžete také použít -D, což je alias pro --delete --force, který odstraní větev „bez ohledu na její sloučený stav“. [Zdroj: man git-branch]

Smazat vzdálenou pobočku [Aktualizováno dne 8. září 2017]

Od Git v1.7.0 , můžete smazatremotevětev pomocí

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

které by mohly být snadněji zapamatovatelné než

$ git Push <remote_name> :<branch_name>

který byl přidán do Git v1.5.0 "pro smazání vzdálené větve nebo tagu."

Od Git v2.8.0 můžete také použít git Push s volbou -d jako alias pro --delete.

Verze Gitu, kterou jste nainstalovali, tedy diktuje, zda je třeba použít jednodušší nebo tvrdší syntaxi.

Smazat vzdálenou pobočku [Původní odpověď od 5. ledna 2010]

Z kapitoly 3 Pro Git uživatelem Scott Chacon:

Odstranění vzdálených poboček

Předpokládejme, že jste hotovi se vzdálenou pobočkou - řekněme, že vy a vaši spolupracovníci jste dokončili s funkcí a sloučili jste ji do hlavní větve vzdáleného serveru (nebo do kterékoli větve, ve které se nachází stabilní kódová linka). Vzdálenou větev můžete odstranit pomocí poměrně tupé syntaxe git Push [remotename] :[branch]. Pokud chcete ze serveru odstranit větev serveru-fix, spusťte následující:

$ git Push Origin :serverfix
To [email protected]:schacon/simplegit.git
 - [deleted]         serverfix

Výložník. Žádné další pobočky na serveru. Možná budete chtít tuto stránku prosadit, protože tento příkaz budete potřebovat a pravděpodobně zapomenete na syntaxi. Způsob, jak si tento příkaz zapamatovat, je vyvoláním syntaxe git Push [remotename] [localbranch]:[remotebranch], kterou jsme si přešli o něco dříve. Pokud ponecháte část [localbranch], pak v podstatě říkáte: „Neberte nic na mou stranu a nechte to být [remotebranch].“

Vydal jsem git Push Origin :bugfix a fungovalo to krásně. Scott Chacon měl pravdu - budu chtít pes ucho to stránky (nebo prakticky psa ucha tím, že odpoví na Stack Overflow).

Pak byste to měli provést na jiných počítačích

git fetch --all --Prune

šíření změn.

18919
Matthew Rankin

Matthewova odpověď je skvělá pro odstranění remotebranches a já také oceňuji vysvětlení, ale abych dělal jednoduchý rozdíl mezi těmito dvěma příkazy:

Odebránímístní pobočkyz vašeho počítače:

git branch -d {the_local_branch}místo toho použijte -D k vynucení vymazání větve bez kontroly sloučeného stavu)

Odebrání _ (vzdálená větevze serveru:

git Push Origin --delete {the_remote_branch}

Reference: https://makandracards.com/makandra/621-git-delete-a-branch-local-or-remote

3016
Eric Brotto

Krátké odpovědi

Pokud chcete podrobnější vysvětlení následujících příkazů, podívejte se na dlouhé odpovědi v následující části.

Smazání vzdálené větve:

git Push Origin --delete <branch>  # Git version 1.7.0 or newer
git Push Origin :<branch>          # Git versions older than 1.7.0

Odstranění místní pobočky:

git branch --delete <branch>
git branch -d <branch> # Shorter version
git branch -D <branch> # Force delete un-merged branches

Odstranění místní větve vzdáleného sledování:

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

Dlouhá odpověď: existují 3 různé větve, které chcete smazat!

Když se zabýváte odstraňováním poboček lokálně i vzdáleně, mějte na paměti, že existují 3 různé pobočky :

  1. Místní pobočka X.
  2. Vzdálená pobočka X.
  3. Lokální větev vzdáleného sledování Origin/X, která sleduje vzdálenou větev X.

Visualization of 3 branches

Použitý originální plakát

git branch -rd Origin/bugfix

který smazal pouze jeho lokální pobočku vzdáleného sledování Origin/bugfix a ne skutečnou vzdálenou větev bugfix na Origin.

Diagram 2

Chcete-li smazat aktuální vzdálenou větev , potřebujete

git Push Origin --delete bugfix

Diagram 3

Další detaily

Následující části popisují další podrobnosti, které je třeba vzít v úvahu při odstraňování vzdálených poboček a poboček vzdáleného sledování.

Vymazání vzdálených větví také odstraňuje větve vzdáleného sledování

Vymazání vzdálené větve X z příkazového řádku pomocí git Push také vymaže lokální větev vzdáleného sledování Origin/X, takže není nutné přesouvat zastaralé větve vzdáleného sledování git fetch --Prune nebo git fetch -p. to by nebylo na škodu, kdybys to stejně udělal.

Můžete ověřit, že vzdálená větev Origin/X byla také odstraněna spuštěním následujícího postupu:

# 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

Prořezávání zastaralé místní větve dálkového sledování Origin/X

Pokud jste z příkazového řádku neodstranili vzdálenou větev X (jako je uvedeno výše), pak bude lokální repo stále obsahovat (nyní zastaralé) vzdálenou větev Origin/X. K tomu může dojít, pokud jste například odstranili vzdálenou větev přímo prostřednictvím webového rozhraní GitHubu.

Typický způsob, jak odstranit tyto zastaralé větve vzdáleného sledování (od verze Git 1.6.6) je jednoduše spustit git fetch s --Prune nebo kratší -p. Všimněte si, že toto odstraní všechny zastaralé místní pobočky vzdáleného sledování pro všechny vzdálené pobočky, které již na vzdáleném serveru neexistují :

git fetch Origin --Prune
git fetch Origin -p # Shorter

Zde je relevantní citace z 1.6.6 poznámky k vydání (zvýraznění miny):

"git fetch" naučil --all a --multipleoptions, spustit fetch z mnoha repozitářů, a--Prune možnost odstranit vzdálené sledovací větve, které byly zastaralé. To činí "git vzdálenou aktualizaci" a "git remote Prune" méně nezbytnou (neexistuje žádný plán na odstranění "vzdálené aktualizace" ani "vzdáleného Prune").

Alternativa k automatickému prořezávání zastaralých poboček dálkového sledování

Případně můžete místo zastřihování zastaralých lokálních větví vzdáleného sledování pomocí git fetch -p, můžete se vyhnout dalšímu provozu v síti pouze tím, že ručně odstraníte větve s příznaky --remote nebo -r:

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

Viz také

1743
user456814

Kroky pro odstranění větve:

Pro smazání vzdálené větve:

git Push Origin --delete <your_branch> 

Pro smazání místní větve , máte tři způsoby :

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

Vysvětlete: OK, vysvětlete, co se tady děje!

Stačí udělat git Push Origin --delete na smazat POUZE vzdálenou pobočku , na konec přidejte název větve a to bude smazáno a současně stisknuto na dálkové ovládání ...

Také git branch -D, které jednoduše smaže místní pobočkuPOUZE! ...

-D je zkratka --delete --force, která odstraní větev, i když není sloučena (force delete), ale můžete také použít -d, což znamená --delete, které způsobí chybu odpovídající stavu spojení hromadné korespondence ...

Vytvářím také níže uvedený obrázek, který zobrazuje kroky:

 delete a remote and local branch in git

1234
Alireza

K odstranění vzdálené větve můžete také použít následující

git Push --delete Origin serverfix

Což dělá totéž jako

git Push Origin :serverfix

ale to může být snadnější zapamatovat.

746
pagetribe

Chcete-li odstranit větev, první odběr do pobočky, která není odstraněna.

git checkout other_than_branch_to_be_deleted

Odstranění místní pobočky:

git branch -D branch_to_be_deleted

Smazání vzdálené větve:

git Push Origin --delete branch_to_be_deleted
357
Praveen Hiremath

Tip: Když odstraníte větve pomocí

git branch -d <branchname> # deletes local branch

nebo

git Push Origin :<branchname> # deletes remote branch

smazány jsou pouze odkazy. Přestože je větev ve vzdáleném prostředí skutečně odstraněna, odkazy na ni stále existují v místních úložištích členů týmu. To znamená, že pro ostatní členy týmu jsou odstraněné větve stále viditelné, když provedou git branch -a.

K vyřešení tohoto problému mohou členové týmu prořezat smazané větve

git remote Prune <repository>

Toto je typicky git remote Prune Origin.

352
pfrenssen
git branch -D <name-of-branch>
git branch -D -r Origin/<name-of-branch>
git Push Origin :<name-of-branch>
256
Felipe

To je jednoduché: Stačí spustit následující příkaz:

Chcete-li odstranit pobočku Git lokálně i vzdáleně, nejprve smažte místní pobočku pomocí příkazu:

git branch -d example

(zde example je název pobočky)

A poté smažte vzdálenou větev pomocí příkazu:

git Push Origin :example
220
Syeful Islam

Další přístup je: -

git Push --Prune Origin

VAROVÁNÍ: Tím odstraníte všechny vzdálené pobočky, které neexistují lokálně. Nebo komplexněji,

git Push --mirror

ve skutečnosti bude vzdálené úložiště vypadat jako lokální kopie úložiště (lokální hlavy, dálkové ovladače a tagy jsou zrcadleny na vzdáleném).

191
imanuelcostigan

V nastavení Bash používám následující:

alias git-shoot="git Push Origin --delete"

Potom můžete volat:

git-shoot branchname
160
crizCraig

Od ledna 2013 GitHub zahrnoval i Delete branch vedle každé větve na stránce "Pobočky".

Relevantní příspěvek na blogu: Vytvoření a odstranění větví

128
Nacho Coloma

Chcete-li provést oba tyto kroky jedním příkazem, můžete pro něj vytvořit alias přidáním níže uvedeného souboru do souboru ~/.gitconfig:

[alias]
    rmbranch = "!f(){ git branch -d ${1} && git Push Origin --delete ${1}; };f"

Případně můžete tento příkaz přidat do své globální konfigurace z příkazového řádku pomocí

git config --global alias.rmbranch \
'!f(){ git branch -d ${1} && git Push Origin --delete ${1}; };f'

NOTE: Pokud použijete -d (malá písmena d), bude pobočka smazána pouze v případě, že byla sloučena. K vynucení smazání budete muset použít -D (velká písmena D).

119
Ryan Kohn

Smazat lokálně:

Chcete-li odstranit místní pobočku, můžete použít:

git branch -d <branch_name> 

Chcete-li větev odstranit násilně, použijte -D místo -d.

git branch -D <branch_name>

Smazat dálkově:

Existují dvě možnosti:

git Push Origin :branchname  

git Push Origin --delete branchname 

Navrhoval bych použít druhý způsob, jak je intuitivnější.

118
Rahul Gupta

Odstranění pobočky lokálně a vzdáleně

  • Pokladna k hlavní větvi - git checkout master

  • Smazat vzdálenou pobočku - git Push Origin --delete <branch-name>

  • Smazat místní pobočku - git branch --delete <branch-name>

111
mfathy00

Můžete to také provést pomocí git remote Prune Origin

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

Vypisuje a odstraňuje vzdálené sledovací větve ze seznamu git branch -r.

106
nickleefly

Kromě ostatních odpovědí často používám nástroj git_remote_branch . Je to zvláštní instalace, ale dostanete pohodlný způsob interakce se vzdálenými pobočkami. V tomto případě smažte:

grb delete branch

Zjistil jsem, že také často používám příkazy publish a track

102
u2622

Jeden liner příkaz delete lokální i vzdálený :

D=branch-name; git branch -D $D; git Push Origin :$D

nebo přidejte alias níže do ~/.gitconfig ; použití: git kill branch-name

[alias]
    kill = "!f(){ git branch -D \"$1\";  git Push Origin --delete \"$1\"; };f"
92
Vinnie James

Smazání větví

Předpokládejme, že naše práce na větvi "contact-form" je hotová a my jsme ji již integrovali do "master". Protože ji již nepotřebujeme, můžeme ji smazat (lokálně):

$ git branch -d contact-form

A pro smazání vzdálené větve:

git Push Origin --delete contact-form
90
Ulysses Alves

Smazat vzdálenou větev

git Push Origin :<branchname>

Smazat místní pobočku

git branch -D <branchname>

Smazat kroky místní pobočky:

  1. pokladny do jiné pobočky
  2. smazat místní pobočku
86
jayxhj

Jednoduše řekněte:

git branch -d <branch-name>
git Push Origin :<branch-name>
85
piyushmandovra

Nyní to můžete udělat s GitHub Desktop app.

Po spuštění aplikace

  1. Klikněte na projekt obsahující větev
  2. Přepněte na pobočku, kterou chcete smazat  switching branch
  3. Z nabídky "Pobočka" vyberte "Zrušit zveřejnění ...", aby byla pobočka odstraněna ze serverů GitHub.  unpublish branch
  4. Z menu "Pobočka" vyberte, "Smazat" název_světla "...", aby se pobočka odstranila z vašeho místního počítače (aka stroj, na kterém právě pracujete)  delete local branch
79
Eric
git Push Origin --delete <branch Name>

je snadnější si pamatovat než

git Push Origin :branchName
78
Smila

Odstranění místně - (normální),

git branch -d my_branch

Pokud vaše pobočka v rebasing/slučování pokroku a to nebylo provedeno správně znamená, dostanete chybu Rebase/Merge in progress, takže v tomto případě nebudete moci odstranit svou pobočku.

Takže buď vaše potřeba řešit rebasing/sloučení, jinak můžete vynutit Delete pomocí,

git branch -D my_branch

Smazat ve vzdáleném:

git Push --delete Origin my_branch

umí totéž použít,

git Push Origin :my_branch   # easy to remember both will do the same.

Grafické znázornění

 enter image description here

73
Silent Spectator

Toto nebude fungovat, pokud máte značku se stejným názvem jako větev na dálkovém ovladači:

$ 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 '[email protected]:SomeName/some-repo.git'

V takovém případě musíte určit, že chcete odstranit větev, nikoli značku:

git Push Origin :refs/heads/branch-or-tag-name

Podobně pro odstranění značky namísto větve, kterou byste použili:

git Push Origin :refs/tags/branch-or-tag-name
64
Amiramix

Mnohé z dalších odpovědí povedou k chybám/varování. Tento přístup je poměrně bláznivý důkaz, přestože můžete stále potřebovat git branch -D branch_to_delete, pokud to není plně sloučeno například do some_other_branch.

git checkout some_other_branch
git Push Origin :branch_to_delete
git branch -d branch_to_delete

Vzdálené prořezávání není nutné, pokud jste odstranili vzdálenou větev. Používá se pouze k získání nejaktuálnějších dálkových ovladačů dostupných v úložišti, které sledujete. Pozoroval jsem git fetch bude přidávat dálkové ovladače, ne odstranit. Zde je příklad, kdy bude git remote Prune Origin něco skutečně dělat:

Uživatel A provede výše uvedené kroky. Uživatel B by spustil následující příkazy, aby viděl nejaktuálnější vzdálené pobočky

git fetch
git remote Prune Origin
git branch -r
50
Brandon Cook

Nemohl jsem se dostat na tuto odpověď, takže jsem vzal podobný přístup odpověď, kterou crizCraig zaslal dříve.

Do mého profilu Bash byly přidány následující položky:

function gitdelete(){
    git Push Origin --delete $1
    git branch -D $1
}

Pokaždé, když jsem hotový s pobočkou (například sloučen do master), v terminálu provozuji následující:

gitdelete my-branch-name

... který pak odstraní my-branch-name z Origin stejně jako lokálně.

49
arthurakay

Před provedením

git branch --delete <branch>

ujistěte se, že nejprve určíte, co je EXACT název vzdálené větve provedením:

git ls-remote

To vám řekne, co přesně zadat hodnotu <branch>. (branch rozlišuje velká a malá písmena!)

45
joey
git Push Origin :bugfix  # Deletes remote branch
git branch -d bugfix     # Must delete local branch manually

Pokud jste si jisti, že jej chcete smazat, spusťte jej

git branch -D bugfix

Nyní vyčistit smazané vzdálené pobočky spustit

git remote Prune Origin
44
Vivek

Mashup všech ostatních odpovědí. Vyžaduje Ruby 1.9.3+, testováno pouze na OS X.

Zavolat tento soubor git-remove, provést ho spustitelný a dát ho do cesty. Potom použijte například 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
43
Dan Rosenstark

Do souboru .gitconfig jsem přidal následující aliasy. To mi umožňuje smazat větve s nebo bez zadání názvu větve. Název větve je standardně nastaven na aktuální větev, pokud není předán žádný argument.

[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"
39
Jared Knipp

Alternativní možností příkazového řádku pro smazání vzdálených poboček je stránka větví GitHub .

Viz například: https://github.com/angular/angular.js/branches

Nalezeno v Code -> Branches stránce úložiště GitHub.

Obecně preferuji příkazový řádek sám, ale tato stránka GitHub vám ukáže mnohem více informací o pobočkách, jako například poslední aktualizované datum a uživatel , a počet provizí dopředu a dozadu . To je užitečné, když se jedná o velký počet poboček.

31
Bradley Flood

Také jsem měl podobné problémy a zdá se, že to funguje: To odstraní místní pobočku. git branch -d the_local_branch

Tím se odstraní vzdálená větev git Push Origin :the_remote_branch

Zdroj: Makandra Cards

30
Srijan Karki

Tam jsou dobré odpovědi, ale v případě, že máte tunu poboček, jejich odstranění po jednom místně a vzdáleně, by bylo nudné úkoly. Tento skript můžete použít k automatizaci těchto úkolů.

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 
  • Seznam větví, které nechcete odstranit
  • Iterace přes pobočku dálkových ovladačů a pokud nejsou v našem "seznamu uchování", jsme smazali.

Zdroj: remove-git-branches-at-once

28
levi

Pomocí GitBash můžete provést následující:

git branch --delete <branch>

OR

V aplikaci GitHub pro stolní počítače, když máte odhlášenou větev, můžete odstranit Místní větev pomocí pruhu nabídky Pobočka:

 enter image description here

Pokud NENÍ / používáte aplikaci GitHub pro stolní počítače a používáte IDE, jako je Visual Studio pro místní ovládání zdroje, stačí pár rychlých kroků:

  1. Podívejte se na jinou pobočku, než kterou chcete smazat.
  2. Klepněte pravým tlačítkem myši na větev, kterou chcete odstranit.
  3. Z kontextového menu vyberte volbu Delete .

Poté, co se přihlásíte ke svému účtu GitHub online, přejděte do úložiště a klikněte na kartuVšechny větve. Odtud stačí kliknout na ikonu malého koše vpravo na název brach, který chcete smazat.

 enter image description here

* Mějte na paměti, že pokud pobočka není publikována, není nutné ji z vašeho online úložiště mazat.

23
Uchiha Itachi

Vytvořil jsem následující pohodlnou funkci v mém souboru .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
}
19

Podle posledního dokumentu pomocí terminálu můžeme smazat následující cestu.

smazat v místním:

git branch -D usermanagement

smazat na vzdáleném místě:

git Push --delete Origin usermanagement
19
KARTHIKEYAN.A

Je to velmi jednoduché

Smazání vzdálené větve

git Push -d Origin <branch-name>

OR

git Push Origin :<branch-name>

Odstranění místní pobočky

git branch -D <branch-name>
15
Vivek Maru