2014-10-18 14 views
5

Sto provando a selezionare un commit da github.git cherry-pick commitless sul remote remote

https://github.com/angular/angular.js/commit/469b750019adb193f2b973ab841ac87d0d06d4f2

Per quanto posso dire, non è una parte di qualsiasi rami attivi. Ho provato questo nel mio repo locale:

git remote add upstream https://github.com/angular/angular.js.git 
git fetch upstream 
git cherry-pick 469b750 

ottengo questo errore

fatal: bad revision '469b750' 

è quello che sto cercando di fare possibile? Ho cercato i commit smarriti, orfani e senza rami, ma non ho trovato nulla che mi aiutasse. Potrei semplicemente copiare/incollare questo e averlo fatto, ma sto cercando di mantenere la cronologia e saperne di più su git. Grazie.

+0

Non esiste alcun modo per recuperare un commit da un remoto che non è raggiungibile tramite un riferimento (che è un prerequisito per il cherry-pick) –

+0

Molto probabilmente, il commit in questione è diventato irraggiungibile dopo un force-push (nota che il suo genitore, '80ea36256f8ffc6ad59ea5964c919c36327a909d', è ancora raggiungibile) ma [in qualche modo viene comunque visualizzato su Github] (https://help.github.com/articles/commit-exists-on-github-but-not-in-my -local-clone/# the-ramo-che-conteneva-the-commit-stato-eliminata). – Jubobs

risposta

5

Non sarà esattamente selezionamento di ciliegio, ma è possibile applicare questo commettere come segue:

  1. Aggiungi .patch a Github URL e salvarlo come file di patch git:

    wget https://github.com/angular/angular.js/commit/469b750019adb193f2b973ab841ac87d0d06d4f2.patch -o new.patch 
    
  2. Applica questo commit al tuo albero con git am:

Il risultato di questo dovrebbe essere identico al cherry-picking.

+0

Ricerca combinata e informazioni di auto-aiuto nella tua risposta se non ti dispiace. – BookOfGreg

+1

@BookOfGreg: è risaputo che è possibile ottenere patch in formato git da Github aggiungendo .patch all'URL.Inoltre uso spesso 'git format-patch -1' /' git am' combo invece di cherry-picking - lo trovo più conveniente. Ecco perché ho proposto questo come soluzione. – mvp

1

Questo è un problema davvero interessante. Lo stavo testando localmente da solo e il commit non appare in reflog --all quindi non è solo orfano ma non è scaricato da Github su pull, clone o fetch. Potrebbe essere un caso che è completamente perso per sempre a meno che non lo scarichi manualmente e lo rimetta nell'albero.

https://help.github.com/articles/commit-exists-on-github-but-not-in-my-local-clone/

+0

Grazie per la conferma. Ho visto l'articolo di Github nella mia ricerca, è solido. La mancanza di informazioni sul cherry picking suggerisce che non è possibile. Voglio vedere se lo stackoverflow è d'accordo. –

+2

La soluzione di mvp la scarica manualmente e la rimette nell'albero, quindi il mio background era corretto ma il suo vero meccanismo per farlo è la soluzione. :) – BookOfGreg

0

Stavo cercando in bitbucket uno specifico commit eseguito da un collega oggi e poi sono passato alla mia riga di comando per eseguire il cherry pick che commit (e una serie di altri commit) in un altro ramo git sperimentale. Ho notato che ho eseguito questo errore "fatale: revisione errata" ####### "". È perché anche se era in bitbucket, non era nel mio repository git locale ... Ho fatto un 'git pull' per ottenere quei commit, e poi il cherry pick ha funzionato. Questa potrebbe essere la soluzione alla maggior parte dei problemi con questo errore.