Close

git remote

SVN utilizza un unico repository centralizzato per fungere da hub di comunicazione per gli sviluppatori e la collaborazione avviene mediante il passaggio di set di modifiche tra le copie di lavoro degli sviluppatori e il repository centrale. Ciò è diverso dal modello di collaborazione distribuita Git, che offre a ogni sviluppatore la propria copia del repository, completa della propria cronologia locale e della propria struttura di branch. Gli utenti in genere devono condividere una serie di commit piuttosto che un singolo set di modifiche. Invece di eseguire il commit di un set di modifiche da una copia di lavoro al repository centrale, Git permette di condividere interi branch tra i repository.

Il comando git remote è un elemento del sistema più ampio che è responsabile della sincronizzazione delle modifiche. I record registrati tramite il comando git remote vengono utilizzati insieme ai comandi git fetch, git push e git pull. Tutti questi comandi hanno le proprie responsabilità di sincronizzazione che possono essere esplorate sui link corrispondenti.


git remote


Il comando git remote ti consente di creare, visualizzare ed eliminare connessioni ad altri repository. Le connessioni remote sono più simili ai segnalibri che non a link diretti ad altri repository. Invece di fornire accesso in tempo reale a un altro repository, fungono da nomi convenienti che possono essere usati per fare riferimento a un URL non altrettanto comodo.

Ad esempio, il diagramma seguente mostra due connessioni remote dal tuo repository al repository centrale e a un altro repository per sviluppatori. Invece di fare riferimento a loro tramite i loro URL completi, puoi passare le scorciatoie origin e john ad altri comandi Git.

Utilizzo di git remote per connettersi ad altri repository
Finestra della console
materiale correlato

Registro Git avanzato

Logo di Bitbucket
Scopri la soluzione

Impara a utilizzare Git con Bitbucket Cloud

Panoramica sull'utilizzo di git remote


Il comando git remote è essenzialmente un'interfaccia per la gestione di un elenco di voci remote archiviate nel file ./.git/config del repository. I seguenti comandi vengono utilizzati per visualizzare lo stato corrente dell'elenco remoto.

Visualizzazione delle configurazioni git remote


git remote

Elenca le connessioni remote di cui disponi ad altri repository.

git remote -v

Uguale al comando precedente, ma includi l'URL di ogni connessione.

Creazione e modifica delle configurazioni git remote


Il comando git remote è anche un comodo metodo «di supporto» per modificare il file ./.git/config di un repository. I comandi presentati di seguito consentono di gestire le connessioni con altri repository. I seguenti comandi modificheranno il file /.git/config del repository. Il risultato dei seguenti comandi può essere ottenuto anche modificando direttamente il file ./.git/config con un editor di testo.

git remote add <name> <url>

Crea una nuova connessione a un repository remoto. Dopo aver aggiunto un telecomando, potrai usare come comoda scorciatoia per in altri comandi Git.

git remote rm <name>

Rimuovi la connessione al repository remoto denominata .

git remote rename <old-name> <new-name>

Rinomina una connessione remota da a .

Discussione su git remote


Git è progettato per offrire a ogni sviluppatore un ambiente di sviluppo completamente isolato. Ciò significa che le informazioni non vengono trasmesse automaticamente avanti e indietro tra i repository. Invece, gli sviluppatori devono inserire manualmente i commit upstream nel proprio repository locale o reindirizzare manualmente i propri commit locali al repository centrale. Il comando git remote è in realtà solo un modo più semplice per passare gli URL a questi comandi di condivisione.

Il remoto di origine


Quando cloni un repository con git clone, esso crea automaticamente una connessione remota chiamata origin che punta al repository clonato. Questo è utile per gli sviluppatori che creano una copia locale di un repository centrale, poiché fornisce un modo semplice per estrarre le modifiche upstream o pubblicare commit locali. Questo comportamento è anche il motivo per cui la maggior parte dei progetti basati su Git definisce il proprio repository centrale come origine.

URL del repository


Git supporta molti modi per fare riferimento a un repository remoto. Due dei modi più semplici per accedere a un repository remoto sono tramite i protocolli HTTP e SSH. HTTP è un modo semplice per consentire l'accesso anonimo e in sola lettura a un repository. Ad esempio:

http://host/path/to/repo.git

Ma in genere non è possibile inviare i commit a un indirizzo HTTP (non consentiresti comunque i push anonimi). Per l'accesso in lettura-scrittura, dovresti invece usare SSH:

ssh://user@host/path/to/repo.git

Avrai bisogno di un account SSH valido sulla macchina host, ma a parte questo, Git supporta l'accesso autenticato tramite SSH fin dall'inizio. Le soluzioni di hosting di terze parti moderne e sicure come Bitbucket.com forniranno questi URL per te.

Comandi git remote


Il comando git remote è uno dei tanti comandi Git che richiede ulteriori «sottocomandi» aggiunti. Di seguito è riportato un esame dei sottocomandi git remote comunemente usati.

ADD <NAME> <URL>

Aggiunge un record a ./.git/config per il remoto denominato all'URL del repository

Accetta l'opzione -f, che applicherà git fetch immediatamente dopo la creazione del record remoto.

Accetta l'opzione --tags, che applicherà git fetch immediatamente e importerà tutti i tag dal repository remoto.

RENAME <OLD> <NEW>

Aggiorna ./.git/config per rinominare il record in . Tutti i branch di tracciamento remoto e le impostazioni di configurazione per il telecomando sono aggiornati.

REMOVE or RM <NAME>

Modifica ./.git/config e rimuove il remoto denominato . Tutte i branch di tracciamento remoto e le impostazioni di configurazione per il telecomando sono state rimosse.

GET-URL <NAME>

Emette gli URL per un record remoto.

Accetta --push, gli URL push vengono interrogati anziché recuperare gli URL.

Con --all, verranno elencati tutti gli URL del remoto.

SHOW <NAME>

Fornisce informazioni di alto livello sul remoto .

PRUNE <NAME>

Elimina tutti i banch locali per che non sono presenti nel repository remoto.

Accetta l'opzione --dry-run che elencherà quali branch sono impostati per il pruning, ma non verranno sottoposti a pruning.

Esempi di git remote


Oltre a origin, spesso è conveniente avere una connessione ai repository dei tuoi compagni di squadra. Ad esempio, se il tuo collega, John, gestiva un repository accessibile al pubblico su dev.example.com/john.git, puoi aggiungere una connessione come segue:

git remote add john http://dev.example.com/john.git

Avere questo tipo di accesso ai repository dei singoli sviluppatori rende possibile la collaborazione al di fuori del deposito centrale. Questo può essere molto utile per i piccoli team che lavorano su un progetto di grandi dimensioni.

Mostrare i remoti


Per predefinito, il comando git remote elencherà le connessioni remote precedentemente archiviate ad altri repository. Questo produrrà un output a riga singola che elenca i nomi dei "segnalibri" dei repository remoti.

$ git remote
origin
upstream
other_users_repo

Richiamando git remote con l'opzione -v verrà stampato l'elenco dei nomi dei repository aggiunti ai segnalibri e, inoltre, l'URL del repository corrispondente. L'opzione -v sta per "verbose". Di seguito è riportato un esempio di output git remote verbose.

git remote -v
origin  git@bitbucket.com:origin_user/reponame.git (fetch)
origin  git@bitbucket.com:origin_user/reponame.git (push)
upstream    https://bitbucket.com/upstream_user/reponame.git (fetch)
upstream    https://bitbucket.com/upstream_user/reponame.git (push)
other_users_repo    https://bitbucket.com/other_users_repo/reponame (fetch)
other_users_repo    https://bitbucket.com/other_users_repo/reponame (push)

Aggiunta di repository remoti


Il comando git remote add creerà un nuovo record di connessione a un repository remoto. Dopo aver aggiunto un remoto, potrai usare ./.git/config. Segue un esempio di aggiornamento di questo file di configurazione:

$ git remote add fake_test https://bitbucket.com/upstream_user/reponame.git; [remote "remote_test"] 
   url = https://bitbucket.com/upstream_user/reponame.git 
   fetch = +refs/heads/*:refs/remotes/remote_test/*

Ispezione di un remoto


Il sottocomando show può essere aggiunto a git remote per fornire un output dettagliato sulla configurazione di un remoto. Questo output conterrà un elenco dei branch associati al remoto e anche gli endpoint collegati per il recupero e il push.

git remote show upstream
* remote upstream
   Fetch URL: https://bitbucket.com/upstream_user/reponame.git
   Push URL: https://bitbucket.com/upstream_user/reponame.git
   HEAD branch: main
   Remote branches:
      main tracked
      simd-deprecated tracked
      tutorial tracked
   Local ref configured for 'git push':
      main pushes to main (fast-forwardable)

Recupero e pull da remoti Git


Una volta configurato un record remoto tramite l'uso del comando git remote, il nome remoto può essere passato come argomento ad altri comandi Git per comunicare con il repository remoto. Sia git fetch che git pull possono essere usati per leggere da un repository remoto. Entrambi i comandi hanno operazioni diverse che sono spiegate in modo più approfondito nei rispettivi link.

Push ai remoti Git


Il comando git push viene utilizzato per caricare i contenuti in un repository remoto.

git push <remote-name> <branch-name>

Questo esempio caricherà lo stato locale di nel repository remoto specificato da <nome-remoto>.

Ridenominazione e rimozione dei remoti


git remote rename <old-name> <new-name>

Il comando git remote rename si spiega da sé. Una volta eseguito, questo comando rinominerà una connessione remota da a . Inoltre, modificherà il contenuto di ./.git/config per rinominare anche il record per il remoto.

git remote rm <name>

Il comando git remote rm rimuoverà la connessione al repository remoto specificato dal parametro . Per dimostrarlo, annulliamo l'aggiunta remota dal nostro ultimo esempio. Se eseguiamo git remote rm remote_test e poi esaminiamo il contenuto di ./.git/config possiamo vedere che il record [remote" remote_test"] non c'è più.


Condividi l'articolo
Argomento successivo

Letture consigliate

Aggiungi ai preferiti queste risorse per ricevere informazioni sui tipi di team DevOps e aggiornamenti continui su DevOps in Atlassian.

Le persone collaborano utilizzando una parete piena di strumenti

Blog di Bitbucket

Illustrazione su Devops

Percorso di apprendimento DevOps

Funzione Demo Den per demo con esperti Atlassian

Come Bitbucket Cloud funziona con Atlassian Open DevOps

Iscriviti alla nostra newsletter DevOps

Thank you for signing up