Quando leggi nella git tag
pagina man :
Un aspetto importante di git è che è distribuito, e la sua distribuzione in gran parte significa che non vi è alcun "upstream" o "downstream" intrinseco nel sistema.
, ciò significa semplicemente che non esiste un repository upstream o repository downstream assoluto .
Tali nozioni sono sempre relative tra due repository e dipendono dal modo in cui i dati scorrono:
Se "yourRepo" ha dichiarato "otherRepo" come remoto, quindi :
- stai estraendo da "otherRepo" a monte ("otherRepo" è "upstream da te", e sei "downstream per otherRepo").
- stai spingendo verso monte ("otherRepo" è ancora "a monte", dove le informazioni ora tornano a).
Nota "da" e "per": non sei solo "a valle", sei "a valle da / a ", quindi l'aspetto relativo.
La svolta del DVCS (Distributed Version Control System) è: non hai idea di cosa sia effettivamente a valle, a parte il tuo repository relativo ai repository remoti che hai dichiarato.
- sai cos'è a monte (i repository da cui stai estraendo o spingendo)
- non sai di cosa sia fatto il downstream (gli altri repository che effettuano il pull o il push del repository ).
Fondamentalmente:
In termini di " flusso di dati ", il repository si trova nella parte inferiore ("downstream") di un flusso proveniente da repository a monte ("pull from") e che torna a (lo stesso o altro) repository a monte ("push to" ).
È possibile vedere un'illustrazione nella git-rebase
pagina man con il paragrafo "RECUPERO DALLA REVISIONE DI UPSTREAM":
Significa che stai effettuando il pull da un repository "a monte" in cui ha avuto luogo un rebase , e tu (il repository "a valle") sei bloccato con la conseguenza (molti commit duplicati, perché il ramo riformato a monte ha ricreato i commit dello stesso ramo che hai avere localmente).
Ciò è negativo perché per un repository "upstream" possono esserci molti repository downstream (ovvero repository che estraggono da quello upstream, con il ramo rinnovato), tutti potenzialmente in grado di gestire i commit duplicati.
Ancora una volta, con l'analogia del "flusso di dati", in un DVCS, un comando errato "a monte" può avere un " effetto a catena " a valle.
Nota: questo non è limitato ai dati.
Si applica anche ai parametri , poiché i comandi git (come quelli "porcellana") spesso chiamano internamente altri comandi git (quelli "idraulici"). Vedi la rev-parse
pagina man :
Molti comandi di git porcellanato prendono una combinazione di flag (cioè parametri che iniziano con un trattino ' -
') e parametri pensati per il git rev-list
comando sottostante che usano internamente e flag e parametri per gli altri comandi che usano a vallegit rev-list
. Questo comando viene utilizzato per distinguerli.