Esercizio - Caricare il progetto in GitHub

Completato

È possibile importare repository in GitHub usando GitHub Importer, la riga di comando o strumenti di migrazione esterni.

About GitHub Importer (Informazioni su GitHub Importer)

Se si ha codice sorgente in Subversion, Mercurial, controllo della versione di Team Foundation o in un altro repository Git, è possibile spostarlo in GitHub usando GitHub Importer. GitHub Importer è uno strumento che importa rapidamente e automaticamente in GitHub i repository di codice sorgente, inclusi i commit e la cronologia delle revisioni.

Durante un'importazione, a seconda del sistema di controllo della versione da cui si esegue l'importazione, è possibile eseguire alcune delle attività seguenti. Eseguire l'autenticazione con il repository remoto, aggiornare l'attribuzione dell'autore del commit, importare repository con file di grandi dimensioni o rimuovere file di grandi dimensioni se non si vuole usare Git Large File Storage.

Azione di importazione Subversion Mercurial Controllo della versione di Team Foundation Git
Eseguire l'autenticazione con il repository remoto X X X X
Aggiornare l'attribuzione degli autori dei commit X X X
Spostare file di grandi dimensioni in Git Large File Storage X X X
Rimuovere file di grandi dimensioni dal repository X X X

Importazione di un repository con GitHub Importer

Se è presente un progetto ospitato in un altro sistema di controllo della versione, è possibile importarlo automaticamente in GitHub usando lo strumento GitHub Importer. GitHub Importer non è adatto per tutte le importazioni. Se ad esempio il codice esistente è ospitato in una rete privata, lo strumento non riesce ad accedervi. In questi casi, è consigliabile eseguire l'importazione usando la riga di comando per i repository Git o uno strumento di migrazione del codice sorgente esterno per i progetti importati da altri sistemi di controllo della versione.

Se si vuole associare i commit nel repository agli account utente GitHub degli autori durante l'importazione. Prima di iniziare l'importazione, assicurarsi che ogni collaboratore al repository disponga di un account GitHub.

I repository e i singoli file sono soggetti a limiti di dimensioni. Per altre informazioni, vedere Informazioni sui file di grandi dimensioni in GitHub.

Seguire questa procedura per importare un repository:

  1. Nell'angolo in alto a destra di qualsiasi pagina selezionare + e quindi Import repository (Importa repository).

    Screenshot del pulsante Import repository.

  2. In "Your old repository's clone URL" (URL d clonazione del vecchio repository) digitare l'URL del progetto da importare.

    Screenshot della casella di testo dell'URL del repository precedente.

  3. Scegliere il proprio account utente o un'organizzazione come proprietario del repository, quindi digitare un nome per il repository in GitHub.

    Screenshot del nome del proprietario del nuovo repository da importare.

  4. Specificare se il nuovo repository deve essere pubblico o privato. Per altre informazioni, vedere Setting repository visibility (Impostazione della visibilità del repository).

    Screenshot delle opzioni Public e Private per il nuovo repository.

  5. Esaminare le informazioni immesse e selezionare Begin import (Inizia importazione).

    Screenshot del pulsante Begin import per l'importazione di un nuovo repository.

  6. Se il progetto precedente è stato protetto da una password, digitare le informazioni di accesso per tale progetto e quindi selezionare Submit (Invia).

    Screenshot della posizione in cui immettere le credenziali del repository precedente.

  7. Se sono presenti più progetti ospitati nell'URL di clonazione del progetto precedente, scegliere il progetto da importare e quindi selezionare Submit (Invia).

    Screenshot di una selezione di progetti trovati nello stesso URL.

  8. Se il progetto contiene file di dimensioni superiori a 100 MB, scegliere se importare i file di grandi dimensioni usando Git Large File Storage e quindi selezionare Continue (Continua).

    Screenshot dei file adatti all'utilità di importazione Git LFS.

Quando il repository viene importato completamente, si riceve un messaggio di posta elettronica.

Aggiornamento dell'attribuzione degli autori dei commit con GitHub Importer

Durante un'importazione, è possibile associare i commit nel repository con l'account GitHub dell'autore del commit. GitHub Importer cerca gli utenti di GitHub i cui indirizzi di posta elettronica corrispondono agli autori dei commit nel repository che si sta importando. È quindi possibile connettere un commit all'autore usando l'indirizzo di posta elettronica o il nome utente GitHub dell'autore.

Aggiornamento degli autori dei commit

Seguire questa procedura per aggiornare un autore del commit:

  1. Dopo aver importato il repository, nella pagina relativa allo stato dell'importazione selezionare Match authors (Abbina autori).

    Screenshot del pulsante Match authors (Abbina autori).

  2. Accanto all'autore di cui si vogliono aggiornare le informazioni selezionare Connect (Connetti).

    Screenshot del processo di connessione dell'autore del commit.

  3. Digitare l'indirizzo di posta elettronica o il nome utente GitHub dell'autore, quindi premere INVIO.

Attribuzione di commit a un utente GitHub con un indirizzo di posta elettronica pubblico

Se un autore di un commit nel repository importato ha un account GitHub associato all'indirizzo di posta elettronica usato per creare i commit e non imposta l'indirizzo di posta elettronica di commit come privato. GitHub Importer corrisponde quindi all'indirizzo di posta elettronica associato al commit all'indirizzo di posta elettronica pubblico associato al proprio account GitHub e gli attributi del commit nel proprio account GitHub.

Attribuzione di commit a un utente GitHub senza un indirizzo di posta elettronica pubblico

Se l'autore di un commit nel repository importato non imposta un indirizzo di posta elettronica pubblico nel proprio profilo GitHub o imposta il relativo indirizzo di posta elettronica di commit come privato. GitHub Importer potrebbe quindi non essere in grado di trovare la corrispondenza con l'indirizzo di posta elettronica associato al commit con il proprio account GitHub.

L'autore del commit può risolvere questo problema impostando l'indirizzo di posta elettronica come privato. I commit vengono quindi attribuiti a <username>@users.noreply.github.com, e i commit importati sono associati al proprio account GitHub.

Attribuzione di commit tramite un indirizzo di posta elettronica

Se l'indirizzo di posta elettronica dell'autore non è associato all'account GitHub, può aggiungere l'indirizzo all'account dopo l'importazione e i commit verranno attribuiti correttamente.

Se l'autore non ha un account GitHub, GitHub Importer attribuisce i commit all'indirizzo di posta elettronica associato ai commit.

Importazione di un repository GitHub tramite la riga di comando

Se GitHub Importer non è adatto alle proprie esigenze, ad esempio se il codice esistente è ospitato su una rete privata, è consigliabile eseguire l'importazione usando la riga di comando.

Prima di iniziare, assicurarsi di avere a disposizione:

  • Il nome utente GitHub
  • L'URL di clonazione per il repository esterno, ad esempio https://external-host.com/user/repo.git o git://external-host.com/user/repo.git (eventualmente con user@ davanti al nome di dominio external-host.com)

A scopo di dimostrazione, si usano:

  • Un account esterno denominato ext-user
  • Un host Git esterno denominato https://external-host.com
  • Un account utente GitHub personale denominato ghuser
  • Un repository in GitHub.com denominato repo.git

Per importare il repository esterno, seguire questa procedura:

  1. Creare un nuovo repository in GitHub. Si importa il repository Git esterno in questo nuovo repository.

  2. Nella riga di comando creare un clone "bare" del repository usando l'URL di clonazione esterno. Questo comando crea una copia completa dei dati, ma senza una directory di lavoro per la modifica dei file e garantisce un'esportazione pulita e aggiornata di tutti i dati precedenti.

    $ git clone --bare https://external-host.com/ext-user/repo.git
    #Makes a bare clone of the external repository in a local directory 
    
  3. Eseguire il push del repository clonato localmente in GitHub usando l'opzione "mirror", che garantisce che tutti i riferimenti, ad esempio rami e tag, vengano copiati nel repository importato.

    $ cd repo.git
    $ git push --mirror https://github.com/ghuser/repo.git
    #Pushes the mirror to the new repository on GitHub.com 
    
  4. Rimuovere il repository locale temporaneo.

    $ cd ..
    $ rm -rf repo.git 
    

Aggiunta di codice ospitato in locale a GitHub

Se il codice sorgente o i repository esistenti sono archiviati localmente nel computer o nella rete privata, è possibile aggiungerli a GitHub digitando i comandi in un terminale. Digitando direttamente i comandi Git o usando l'interfaccia della riga di comando di GitHub.

L'interfaccia della riga di comando di GitHub è uno strumento open source che consente di usare GitHub dalla riga di comando del computer. L'interfaccia della riga di comando di GitHub consente di semplificare il processo di aggiunta di un progetto esistente a GitHub tramite la riga di comando. Per altre informazioni sull'interfaccia della riga di comando di GitHub, vedere About GitHub CLI (Informazioni sull'interfaccia della riga di comando di GitHub).

Aggiunta di un repository locale a GitHub con l'interfaccia della riga di comando di GitHub

Seguire questa procedura per aggiungere un repository locale con l'interfaccia della riga di comando di GitHub:

  1. Nella riga di comando passare alla directory radice del progetto.

  2. Inizializzare la directory locale come repository Git.

    git init -b main
    
  3. Preparare per il commit tutti i file nel progetto ed eseguirne il commit.

    git add . && git commit -m "initial commit"
    
  4. Per creare un repository per il progetto in GitHub, usare gh repo create subcommand. Quando richiesto, selezionare Push an existing local repository to GitHub (Esegui il push di un repository locale in GitHub) e immettere il nome desiderato per il repository. Se il progetto deve appartenere a un'organizzazione invece che all'account utente, specificare il nome dell'organizzazione e il nome del progetto con organization-name/project-name.

  5. Seguire le richieste interattive. Per aggiungere il repository remoto ed eseguirne il push, confermare l'azione con yes (sì) quando viene chiesto di aggiungere il repository remoto e di eseguire il push dei commit nel ramo corrente.

  6. In alternativa, per ignorare tutte le richieste, specificare il percorso del repository con il flag --source e passare un flag di visibilità (--public, --private o --internal). Ad esempio: gh repo create --source=. --public. Specificare un repository remoto con il flag --remote. Per eseguire il push dei commit, passare il flag --push. Per altre informazioni sugli argomenti possibili, vedere il manuale dell'interfaccia della riga di comando di GitHub.

Aggiunta di un repository locale a GitHub tramite Git

Seguire questa procedura per aggiungere un repository locale usando Git:

  1. Creare un nuovo repository in GitHub.com. Per evitare errori, non inizializzare il nuovo repository con il file README, il file della licenza o gitignore files. È possibile aggiungere questi file dopo aver eseguito il push del progetto in GitHub.

    Screenshot della creazione del nuovo repository.

  2. Aprire Git Bash.

  3. Modificare la directory di lavoro corrente nel progetto locale.

  4. Inizializzare la directory locale come repository Git.

    $ git init -b main
    
  5. Aggiungere i file nel nuovo repository locale. Questo comando li esegue anche per il primo commit.

    $ git add .
    # Adds the files in the local repository and stages them for commit. To unstage a file, use 'git reset HEAD YOUR-FILE'.
    
  6. Eseguire il commit dei file preparati nel repository locale.

    $ git commit -m "First commit"
    # Commits the tracked changes and prepares them to be pushed to a remote repository. To remove this commit and modify the file, use 'git reset --soft HEAD~1' and commit and add the file again.
    
  7. Nella parte superiore del repository nella pagina Quick Setup di GitHub.com selezionare Copy (Copia) per copiare l'URL del repository remoto.

    Screenshot della copia dell'URL del repository remoto in Quick Setup

  8. Nel prompt dei comandi aggiungere l'URL per il repository remoto. Viene eseguito il push del repository locale in questo percorso.

    $ git remote add origin <REMOTE_URL> 
    # Sets the new remote
    $ git remote -v
    # Verifies the new remote URL
    
  9. Eseguire in GitHub.com il push delle modifiche apportate al repository locale.

    $ git push origin main
    # Pushes the changes in your local repository up to the remote repository you specified as the origin
    

Strumenti di migrazione del codice sorgente

È possibile usare strumenti esterni per spostare i progetti in GitHub. È consigliabile usare GitHub Importer per importare progetti da Subversion, Mercurial, controllo della versione di Team Foundation o da un altro repository Git. È anche possibile usare questi strumenti esterni per convertire il progetto in Git.

Importazione da Subversion

In un ambiente Subversion tipico vengono archiviati più progetti in un singolo repository radice. In GitHub ognuno di questi progetti viene in genere associato a un repository Git separato per un account utente o un'organizzazione. È consigliabile importare ogni parte del repository Subversion in un repository GitHub separato se:

  • I collaboratori devono estrarre o eseguire il commit in tale parte del progetto separatamente dalle altre parti
  • Si vuole che le diverse parti abbiano le proprie autorizzazioni di accesso

È consigliabile usare questi strumenti per convertire i repository Subversion in Git:

Importazione da Mercurial

È consigliabile usare hg-fast-export per convertire i repository Mercurial in Git.

Importazione dal controllo della versione di Team Foundation

È consigliabile usare git-tfs per spostare le modifiche tra il controllo della versione di Team Foundation e Git.

Per altre informazioni sul passaggio da TFVC (un sistema di controllo della versione centralizzato) a Git, vedere Eseguire la migrazione a Git dal controllo della versione centralizzato.