Assumendo cosa si sta realmente chiedendo è quello di afferrare in remoto i file da un repository git , senza avere un albero di lavoro del proprio (o un clone del repository localmente), si potrebbe fare questo:
git archive --format=tgz --remote=<url-to-repo> master -- myfolder | tar zxvf -
Questo dice di creare una sfera tar tarata con gzip del ramo master del repository che vive a <url-to-repo>
, ma include solo il contenuto sotto myfolder
. Piping che attraverso tar
disarchivia i dati e li inserisce nella directory di lavoro corrente .
Se stai effettivamente cercando di gestire un albero di lavoro e lavori con gli altri due sviluppatori , allora quello che stai chiedendo di fare va davvero contro lo strumento dello strumento . Ma dovresti essere molto più elaborato su ciò che stai cercando di fare in modo che qualcuno possa fare un buon suggerimento sul flusso di lavoro.
Aggiornamento:
in modo che non suoni come se si vuole prendere un solo cambiamenti della cartella in un albero di lavoro gestito . Ci dispiace, ma Git non funziona in questo modo. Come ho detto nei commenti di qui sotto, Git gestisce alberi di file. Non consente che una parte di un albero sia in una revisione e che un'altra parte sia in una revisione diversa come che stai suggerendo - forse sei un utente precedente di Subversion dove era possibile?
È possibile ottenere un effetto simile a quello che si desidera, ma è necessario modificare la copia di lavoro . Non lo farei commit la modifica a meno che non si desideri scartare uno dei tuoi sviluppatori lavoro.Si potrebbe a questo:
$ git fetch
$ git checkout @{u} -- myfolder
git fetch
porterà i tuoi riferimenti remoti fino ad oggi - che verrà recuperato il ultime informazioni dai server. git checkout @{u} -- myfolder
farà sì che myfolder
assomigli a ciò che esiste nel ramo di monitoraggio. Questo ha due conseguenze:
Non hai tutti i cambiamenti sulla vostra filiale locale (e si non li desidera, in modo che va bene), e
myfolder
mostreranno come modificato in quanto il contenuto di myfolder
ha aggiornato con l'ultimo disponibile dal repository remoto, ma è diverso dalla revisione corrente.
per ottenere la vostra copia di lavoro di nuovo al normale, fare questo:
$ git checkout -- myfolder
Da lì, si chiama seguire il vostro meccanismo di solito per ottenere il vostro ramo up-to-date con il telecomando (probabile git pull
).
Questo, tuttavia, probabilmente non è il modo in cui si desidera operare. Nonostante il tuo commento, "non importa il caso d'uso", è davvero importante. Spesso ci sono modi migliori per fare il tuo obiettivo generale e gestire lo sviluppo, ma è che richiede capire cosa stai cercando di fare. Al momento, ciò che proponete, , va davvero contro il modo in cui Git intende funzionare.
Quindi lascia che metta un po 'di cose là fuori per voi. Ricerca utilizzando i rami argomento come metodo per gestire il lavoro di sviluppo in corso, piuttosto che utilizzare le cartelle per ogni sviluppatore nella struttura. Modifiche chiare e logiche possono essere apportate sui rami e unite mentre vengono testati e approvati per l'inclusione nella produzione.
Un buon punto di partenza è here. Contiene una buona quantità di informazioni e alcuni seguono i collegamenti a diversi stili di flussi di lavoro Git. Il luogo in cui desideri terminare è dove c'è un commit che rappresenta la versione effettivamente inserita nella produzione , senza distruggere il lavoro che altri stanno facendo per te. Idealmente, taggare ciò che è stato spinto in produzione in modo significativo.
So che a nessuno piace ascoltarlo, ma la formazione potrebbe essere molto utile nel tuo caso. GitHub offre alcune free online classes e diverse altre risorse. A giudicare dall'esperienza, una volta capito come funziona Git e i problemi che risolve, avrai un flusso di lavoro molto migliore.
La tua domanda non è molto chiaro . Diciamo che hai le cartelle 'dev1',' dev2' e 'production'. Stai chiedendo come introdurre tutte le modifiche da 'production' da un altro ramo, o stai chiedendo come impostare essenzialmente il contenuto di' production' su una delle cartelle di sviluppo? Ad ogni modo, il modo in cui ti stai avvicinando a questo suona come il tuo lavoro contro lo strumento. – jszakmeister
ok, riformulerò ... Ho un progetto, un ramo e due sviluppatori e due cartelle nel progetto. ogni sviluppatore lavora su una cartella. entrambi apportano modifiche e li spingono nel ramo. Voglio inserire solo le modifiche di una cartella nel mio computer locale – fredy
Stai utilizzando Git per gestire una copia di lavoro? O stai davvero cercando di ottenere il contenuto di una cartella nel repository sul tuo computer? A giudicare dal tuo commento su PherricOxide, suona come il secondo. – jszakmeister