2013-07-29 14 views
15

Questa non è una domanda su come ripristinare rami perduti in Github, ma quanto tempo è necessario ripristinare un ramo eliminata attraverso il seguente caso all'utente storia:Per quanto tempo è possibile ripristinare/ripristinare un ramo cancellato su GitHub?

All'interno di una richiesta di pull (spesso usato come luogo per la revisione del codice) il ramo può essere unito e quindi eliminato, tutto nella GUI di Github. Se si sceglie di eliminarlo, viene data l'opzione con una parola in grassetto e sottolineata, per "ripristinare" il ramo.

Sospetto che questa opzione abbia un limite di tempo e che github non lo tenga disponibile a tempo indeterminato.

Github ha un limite di tempo per quanto tempo è possibile farlo? Se lo fa, qual è il limite di tempo?

risposta

21

ho chiesto GitHub Support, questa è stata la loro risposta (sottolineatura mia):

Usiamo uno spazio dei nomi Rif separata per tutte le richieste Pull che usiamo per varie cose, tra cui il ripristino del ramo. Poiché manteniamo i ref [Pull Request] a tempo indeterminato, , non ci sono limiti di tempo per il ripristino di un ramo.

Potete vedere questi riferimenti speciali nella vostra remoto utilizzando il seguente:

$ git ls-remote | grep pull 
From [email protected]:<username>/<remote>.git 
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  refs/pull/1/head 
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb  refs/pull/1/merge 
cccccccccccccccccccccccccccccccccccccccc  refs/pull/2/head 
dddddddddddddddddddddddddddddddddddddddd  refs/pull/2/merge 

I riferimenti sono namespace sotto refs/pull/<pull request number>/. I punti di riferimento head sulla punta del ramo richiesto, ovvero l'ultimo commit sul ramo.Non sono sicuro di cosa sia il riferimento allo merge.

2

Il supporto GitHub avrebbe una risposta definitiva, ma ho il sospetto che si basi sul periodo predefinito di 90 giorni prima dello spurgo automatico di the reflog.

gc.<pattern>.reflogexpire 

git reflog scadono rimuove reflog voci di età superiore a questo momento; predefinito per 90 giorni.
Con "<pattern>" (ad esempio "refs/stash") nel mezzo l'impostazione si applica solo ai riferimenti che corrispondono allo <pattern>.

Ma ... ti avevo una copia locale con quella ramo ancora dichiarato in esso ... nulla avrebbe impedito di spingere detto ramo di nuovo alla repo GitHub;) s' answer

Cupcake (upvoted) che invia la risposta supporto: nessun limite, cioè quei due settings are both set to never:

  • gc.reflogexpire
  • gc.reflogexpireunreachable

Questo ha senso per un servizio di repository di hosting che non modifica tali repository localmente e solo memorizza le modifiche apportate dai contributori esterni.

2

Si noti che alcune pagine di richiesta pull su GitHub non mostrano i pulsanti di diramazione Elimina/Ripristina, anche se i riferimenti sono archiviati in modo sicuro as described by Cupcake.

Ciò significa probabilmente che lo stesso ramo è stato nuovamente utilizzato in una successiva richiesta di pull. Cerca il repository (in GitHub) per il nome del ramo e controlla l'ultima richiesta di pull su quel ramo. Dovresti trovare l'interfaccia utente per ripristinare (o eliminare) il ramo lì.

Problemi correlati