Importare un progetto git esistente in GitLab?


147

Ho un account di un'installazione di Gitlab in cui ho creato il repository "ffki-starteite"

Ora voglio clonare il repository git://freifunk.in-kiel.de/ffki-startseite.gitin quel repository con tutti i commit e i rami, così posso iniziare a lavorarci nel mio ambito.

Come posso importarlo?


3
Una nuova funzionalità di gitlab, crea progetto e poi vai alla pagina del progetto. Qui vedrai le istruzioni di base.
— Martijn van Wezel,

Possibile duplicato del mirroring del repository Gitlab
— Kelvin il

Le istruzioni di base sono sparite nelle versioni più recenti di Gitlab, qualcuno che le avesse copiate le avrebbe copiate qui?
— jdevora,

Risposte:


156

Sono stato in grado di esportare completamente il mio progetto insieme a tutti gli commit, i rami e i tag su gitlab tramite i seguenti comandi eseguiti localmente sul mio computer:

Per illustrare il mio esempio, userò https://github.com/raveren/kint come repository dei sorgenti che voglio importare in gitlab. Ho creato un progetto vuoto chiamato Kint(sotto lo spazio dei nomi raveren) in gitlab in anticipo e mi ha detto che l' URL http git del progetto appena creato c'è http://gitlab.example.com/raveren/kint.git

I comandi sono indipendenti dal sistema operativo.

In una nuova directory:

git clone --mirror https://github.com/raveren/kint
cd kint.git
git remote add gitlab http://gitlab.example.com/raveren/kint.git
git push gitlab --mirror

Ora se si dispone di un repository clonato localmente che si desidera continuare a utilizzare con il nuovo telecomando, eseguire i seguenti comandi * lì:

git remote remove origin
git remote add origin http://gitlab.example.com/raveren/kint.git
git fetch --all

* Ciò presuppone che tu non abbia rinominato il tuo master remoto da origin, altrimenti, hai cambiato le prime due righe per rifletterlo.


1
Mi dà l'errore: remote: GitLab: Non sei autorizzato a forzare il codice push in un ramo protetto su questo progetto. A 10.0.100.89:8496/project/james-project.git ! [telecomando rifiutato] master -> master (hook di pre-ricezione rifiutato)
— James Hirschorn,

4
Ho dovuto disattivare i rami protetti in Impostazioni -> Repository per farlo funzionare.
— James Hirschorn,

Vedi la mia domanda perché dovresti usare --mirror
— Martijn van Wezel il

108

Aggiungi il nuovo telecomando gitlab al tuo repository esistente e invia:

git remote add gitlab url-to-gitlab-repo
git push gitlab master

Ho dovuto spingere con forza, perché io giocherellava attorno a gitLab già: git push gitlab master -f. Ora ho l'intero repository con tutti gli commit nel mio nuovo GitLab;) grazie
— rubo77

19
Non avresti bisogno di fare uno specchio? E se avessi altre filiali oltre al maestro?
— Slhck,

7
sì, facendo come suggerisce OP, perdi tutti i rami (tranne il master) e i tag
— raveren,

L'importazione del progetto Gitlab caricherà il repository remoto da un URL quando si crea il progetto. Include istruzioni per l'importazione di repository svn.
— rickfoosusa,

1
git remote aggiungi gitlab url-to-gitlab-repo git push gitlab master --mirror
— Saurabh

23

Per mantenere TUTTI I TAG EI FILIALI

Basta semplicemente eseguire questo comando in un existing Git repository

cd existing_repo
git remote rename origin previous-hosts
git remote add gitlab git@git.hutber.com:hutber/kindred.com.git
git push -u gitlab --all
git push -u gitlab --tags

Non copiare tutti i rami
— Martijn van Wezel,

19

Ecco i passaggi forniti da Gitlab:

cd existing_repo
git remote rename origin old-origin
git remote add origin https://gitlab.example.com/rmishra/demoapp.git
git push -u origin --all
git push -u origin --tags

Questo spingerà solo il maestro e non altri rami
— allkenang

18

Questa è una mossa di base di un repository in una nuova posizione. Uso questa sequenza per tutto il tempo. Con --bare non verrà visualizzato alcun file sorgente.

Apri Git Bash.
Crea un clone nudo del repository.

git clone --bare https://github.com/exampleuser/old-repository.git

Mirror-push nel nuovo repository.

cd old-repository.git

git push --mirror https://github.com/exampleuser/new-repository.git

Rimuovere il repository locale temporaneo creato nel passaggio 1.

cd ../
rm -rf old-repository.git

Perché specchio? Vedi la documentazione di git: https://git-scm.com/docs/git-push

--all Spinge tutti i rami (es. ref sotto refs / heads /); non può essere utilizzato con altri.

--mirror Invece di nominare ogni ref da inviare, specifica che tutti i ref in refs / (che include ma non è limitato a refs / heads /, refs / remotes / e refs / tags /) devono essere specchiati nel repository remoto. I riferimenti locali appena creati verranno spinti all'estremità remota, i riferimenti aggiornati localmente verranno forzati sull'estremità remota e i riferimenti eliminati verranno rimossi dall'estremità remota. Questo è il valore predefinito se è impostata l'opzione di configurazione remote..mirror.


Funziona anche con gitlab!
— asciugamano

12

rake gitlab: import: i repository potrebbero essere un metodo più adatto per l'importazione di massa:

  • copia il repository nudo in repos_path( /home/git/repositories/group/repo.git). Il nome della directory deve terminare .gite trovarsi in un gruppo o in uno spazio dei nomi utente.
  • correre bundle exec rake gitlab:import:repos

Il proprietario sarà il primo amministratore e un gruppo verrà creato se non già esistente.

Vedi anche: Come importare un repository bare git esistente in Gitlab?


Per coloro che possono essere confusi, il repository nudo è il repository solitamente in posizione nella posizione centralizzata (ad es. Github) che NON contiene la cartella .git nella radice del repository. Questa è un'opzione conveniente solo se si ha accesso al server in cui è archiviato il repository nudo. Altrimenti la risposta di @Raveren è l'opzione migliore.
— TinkerTenorSoftwareAcquista il

4
git clone --mirror git@github.com:username/repo-name.git

git remote add gitlab ssh://git@servername.com/username/repo.git

git push -f --tags gitlab refs/heads/*:refs/heads/*

È meglio farlo su ssh, l'https potrebbe non funzionare


"l'https potrebbe non funzionare" normalmente non è così
— Martijn van Wezel,

Questa è una cosa in realtà poiché le connessioni HTTP potrebbero essere disabilitate. Grazie per la risposta.
— Michea l'

2

Spostamento di un progetto da GitHub a GitLab compresi problemi, richieste di pull Wiki, pietre miliari, etichette, note di rilascio e commenti

Esistono istruzioni dettagliate su GitLab Docs:

https://docs.gitlab.com/ee/user/project/import/github.html

tl; dr

  • Assicurati che tutti gli utenti GitHub che desideri mappare agli utenti GitLab abbiano:

    • Un account GitLab che ha effettuato l'accesso utilizzando l'icona GitHub - oppure -
    • Un account GitLab con un indirizzo e-mail che corrisponde all'indirizzo e-mail pubblico dell'utente GitHub
  • Dalla barra di navigazione in alto, fai clic su + e seleziona Nuovo progetto.

  • Seleziona la scheda Importa progetto, quindi seleziona GitHub.
  • Seleziona il primo pulsante per elencare i tuoi repository GitHub. Si viene reindirizzati a una pagina su github.com per autorizzare l'applicazione GitLab.
  • Fai clic su Autorizza gitlabhq. Si viene reindirizzati alla pagina di importazione di GitLab e tutti i repository GitHub sono elencati.
  • Continua a selezionare quali repository importare.

Ma per favore leggi la pagina di GitLab Documenti per dettagli e hook!

(non è molto)


1

Gitlab è un po 'infastidito da questa funzione. Puoi perdere molto tempo durante la risoluzione dei problemi soprattutto se il tuo progetto è grande.

La soluzione migliore sarebbe utilizzare lo strumento di creazione / importazione, non dimenticare di inserire il nome utente e la password, altrimenti non importa nulla.

Segui i miei screenshot

inserisci qui la descrizione dell'immagine

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.