Domanda

Nel mio repo corrente ho il seguente output:

$ git branch -a
* master
  remotes/origin/master
  remotes/public/master

voglio cancellare remotes/public/master dalla lista ramo:

$ git branch -d remotes/public/master
error: branch 'remotes/public/master' not found.

Inoltre, l'uscita di git remote è strano, dal momento che non elenca public:

$ git remote show 
origin

Come faccio a eliminare 'i telecomandi / public / master' dalla lista ramo?

Update, provato il git push comando:

$ git push public :master
fatal: 'public' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
È stato utile?

Soluzione

Si potrebbe essere bisogno di una pulizia

git gc --prune=now

o si potrebbe essere bisogno di una prugna

git remote prune public
  

prugna

     

Elimina tutti i rami di tracciamento stantii in . Questi rami stantio sono già stati rimossi dal repository remoto fa riferimento , ma sono ancora disponibili localmente in "telecomandi / ".

     

Con l'opzione --dry-run, riportano quello che sarà potate i rami, ma non fanno in realtà li potano.

Tuttavia, sembra questi dovrebbero sono stati ripuliti in precedenza con

git remote rm public 
  

rm

     

Rimuovere il nome remoto . Tutto il monitoraggio a distanza rami e le impostazioni di configurazione per il telecomando              vengono rimossi.

Quindi potrebbe essere voi a mano modificato il file di configurazione e questo non si è verificato, o se si hanno problemi di privilegio.

Forse correre ancora una volta che e vedere cosa succede.

Consigli di contesto

Se si dà un'occhiata alla registri di revisione , noterete ho suggerito più tecniche "corretti", che per qualsiasi motivo non ha voglia di lavorare sul loro repository.

ho sospettato il PO aveva fatto qualcosa che ha lasciato il loro albero in uno stato incoerente che ha causato a comportarsi un po 'strano, e git gc è stato richiesto per sistemare dietro cruft sinistra.

In genere git branch -rd origin/badbranch è sufficiente per bombardare un ramo di monitoraggio locale o git push origin :badbranch per bombardare una filiale remota, e di solito volete non necessario chiamare <=>

Altri suggerimenti

Tutto quello che dovete fare è

git fetch -p

Sarà rimuovere tutte le sedi locali che vengono cancellati da remoto.

Se siete su git 1.8.5+ è possibile impostare automaticamente

git config fetch.prune true

o

git config --global fetch.prune true
git push public :master

Ciò elimina il ramo remoto denominato master come Kent Fredric ha sottolineato.

Per elencare remote-tracking rami:

git branch -r

Per eliminare un ramo a distanza-tracking:

git branch -rd public/master

Tutto quello che dovete fare è

$ git branch -rd origin/whatever 

E 'così semplice. Non c'è ragione di chiamare un gc qui.

git gc --prune=now non è quello che volete.

git remote prune public

o git remote prune origin # se questo è il telecomando della sorgente

è quello che vuoi

La risposta accettata non ha funzionato per me quando l'arbitro era pieno. Questo fa però:

$ git remote add public http://anything.com/bogus.git
$ git remote rm public

Nel mio caso stavo cercando di eliminare le voci che sono state salvate in .git/packed-refs. È possibile modificare questo file di testo ed eliminare le voci da essa che git br -D non sa come toccare (Almeno in ver 1.7.9.5).

Ho trovato qui questa soluzione: https://stackoverflow.com/a/11050880/1695680

git push origin --delete <branch name>

di riferimento da: http://www.gitguys.com/ argomenti / aggiungendo-e-remoti rami-rimozione-/

Ho avuto un problema simile. Nessuna delle risposte ha aiutato. Nel mio caso ho avuto due repository remoti rimossi mostrando in modo permanente.

La mia ultima idea era quella di eliminare tutti i riferimenti ad esso a mano.

Diciamo che il repository è chiamato “Repo”. Ho fatto:

find .git -name Repo

e cancellati i file e le directory corrispondenti

grep Repo -r .git

Questo trovato alcuni file di testo in cui ho rimosso le linee corrispondenti. Ora, tutto sembra andare bene.

Di solito è consigliabile lasciare questo lavoro a git.

Non sapevo su git branch -rd, in modo che il modo in cui ho risolto problemi come questo per me è quello di trattare il mio repo come un pronti contro termine a distanza e fare un cancellare a distanza. git push . :refs/remotes/public/master. Se gli altri modi non funzionano e si ha qualche riferimento strano che si vuole sbarazzarsi di, in questo modo crudo è infallibile. Ti dà l'esatta precisione per rimuovere (o crearne!) Qualsiasi tipo di riferimento.

Solo un po 'correlate, ma comunque potrebbe essere utile nella stessa situazione, come abbiamo avuto - usiamo una condivisione di file di rete per il nostro repository remoto. La settimana scorsa le cose stavano lavorando, questa settimana siamo stati sempre l'errore "origine remota non pubblicizzare Ref per arbitri filiali / teste / master. Questo Rif potrebbe non esistere nel remoto o può essere nascosto da impostazioni di autorizzazione"

Ma ci abbiamo creduto nulla era stato fatto per le cose corrotti. Il NFS fa istantanee così ho rivisto ogni "versione precedente" e visto che tre giorni fa, la dimensione in MB del repository era andato da 282MB a 33MB, e circa 1.403 nuovi file e 300 cartelle ora esistito. Ho chiesto ai miei collaboratori e aveva tentato di fare una spinta quel giorno -. Poi annullato

ho usato il "Restore" funzionalità NFS per riportarla a poco prima di tale data e ora everythings lavorare di nuovo bene. Ho provato la prugna in precedenza, non ha ancora sembrano aiutare. Forse le ripuliture più severe avrebbero funzionato.

Spero che questo potrebbe aiutare qualcun altro un giorno!

Jay

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top