Quando você lê na git tag
página do manual :
Um aspecto importante do git é que ele é distribuído e, em grande parte, ser distribuído significa que não há "upstream" ou "downstream" inerente no sistema.
, isso significa simplesmente que não há um repo absoluto a montante ou a jusante.
Essas noções são sempre relativas entre dois repositórios e dependem da maneira como os dados fluem:
Se "yourRepo" declarou "otherRepo" como remoto, então :
- você está retirando do "otherRepo" a montante ("otherRepo" está "a montante de você" e está "a jusante do otherRepo").
- você está empurrando para o upstream ("otherRepo" ainda está "upstream", para onde as informações agora retornam).
Observe o "de" e "para": você não é apenas "a jusante", você é "a jusante de / para ", daí o aspecto relativo.
A reviravolta do DVCS (Sistema de controle de versão distribuído) é: você não tem idéia do que é realmente o downstream, além de seu próprio repositório em relação aos repositórios remotos que você declarou.
- você sabe o que é upstream (os repositórios dos quais você está puxando ou pressionando)
- você não sabe do que é feito o downstream (os outros repositórios são retirados ou enviados para o repositório ).
Basicamente:
Em termos de " fluxo de dados ", seu repositório fica na parte inferior ("a jusante") de um fluxo proveniente de repositórios upstream ("pull from") e voltando para (o mesmo ou outro) repositório upstream ("push to" )
Você pode ver uma ilustração na git-rebase
página do manual com o parágrafo "RECUPERANDO DO UPSTREAM REBASE":
Isso significa que você está retirando de um repo "upstream" onde ocorreu uma nova recuperação e você (o repo "downstream") fica com a conseqüência (muitas confirmações duplicadas, porque a ramificação reestruturada a montante recriou as confirmações da mesma ramificação que você localmente).
Isso é ruim porque, para um repo "upstream", pode haver muitos repositórios downstream (ou seja, repos retirados do upstream, com a ramificação rebased), todos tendo potencialmente para lidar com os commits duplicados.
Novamente, com a analogia do "fluxo de dados", em um DVCS, um comando incorreto "upstream" pode ter um " efeito cascata " downstream.
Nota: isso não se limita aos dados.
Também se aplica a parâmetros , pois os comandos git (como os de "porcelana") costumam chamar internamente outros comandos de git (os de "encanamento"). Veja a rev-parse
página de manual :
Muitos comandos git porcelainish usam mistura de sinalizadores (ou seja, parâmetros que começam com um traço ' -
') e parâmetros destinados ao git rev-list
comando subjacente que eles usam internamente e sinalizadores e parâmetros para os outros comandos que eles usam a jusantegit rev-list
. Este comando é usado para distinguir entre eles.