Come convertire una directory non vuota esistente in una directory di lavoro Git e inviare i file a un repository remoto


644
  1. Ho una directory non vuota (ad esempio / etc / qualcosa) con file che non possono essere rinominati, spostati o eliminati.

  2. Voglio controllare questa directory in git sul posto.

  3. Voglio essere in grado di trasferire lo stato di questo repository a un repository remoto (su un'altra macchina) usando "git push" o qualcosa di simile.

Questo è banale usando Subversion (attualmente lo facciamo usando Subversion) usando:

svn mkdir <url> -m <msg>
cd <localdir>
svn co <url> .
svn add <files etc>
svn commit -m <msg>

Qual è l'equivalente git?

Posso "clonare git" in una directory vuota e spostare semplicemente la directory .git e far funzionare tutto?


5
Forse non capisco, ma non puoi semplicemente correre git initnella directory locale?
Philipp,

Vuoi dire che hai un repository da qualche altra parte e vuoi aggiungere a quel repository tutto il contenuto di questa altra directory che non è un repository? O stai solo cercando di creare un nuovo repository in quella directory?
Cascabel,

Alcune risposte menzionano github, ma la domanda stessa riguarda git. github non è git, e non è il centro dell'universo git.
vfclists,

Risposte:


1056

Dato che hai impostato un demone git su <url>e un repository vuoto:

cd <localdir>
git init
git add .
git commit -m 'message'
git remote add origin <url>
git push -u origin master

12
le istruzioni di abyx sembrano funzionare. Ora corro: git config branch.master.remote origine git config branch.master.merge refs/heads/master che cosa finirò sarà esattamente lo stesso di se clonassi il repository remoto? vale a dire git pulle git pushsarà solo di lavoro ?
HMW,

35
Questo ha funzionato anche per me. Ho dovuto prima creare un progetto AppNamein GitHub. Non era chiaro per me esattamente i <url>mezzi. Quindi per coloro che hanno la stessa domanda, usiamo semplicemente GitHub.com, non stiamo eseguendo il nostro repository, e quindi quello <url>usato nella 5a riga sembrava qualcosa del genere:https://github.com/CompanyName/AppName
Bart

12
Se stai configurando un repository che non si trova su GitHub, assicurati di usare 'git --bare init' per configurare il repository remoto vuoto e non 'git init' (come ho fatto io) altrimenti il ​​push fallirà.
jdusbabek,

3
Volevo solo aggiungere che non potevo spingere fino a quando non ho fatto un: git pull --rebase
Artemix

6
Se git rifiuta perché remote contiene alcune modifiche minori (.README, .gitignore, ecc.), Prova git pull origin master --allow-unrelated-historiesa fare una fusione.
Karlisup,

80

Questo è come lo faccio. Ho aggiunto una spiegazione per capire cosa diavolo sta succedendo.

Inizializza repository locale

  • prima inizializzare Git con

    git init

  • Aggiungi tutti i file per il controllo della versione con

    git add.

  • Crea un commit con un messaggio a tua scelta

    git commit -m 'AddingBaseCode'

Inizializza repository remoto

  • Crea un progetto su GitHub e copia l'URL del tuo progetto. come mostrato di seguito:

    inserisci qui la descrizione dell'immagine

Collega repository remoto a repository locale

  • Ora usa l'URL copiato per collegare il tuo repository locale con il repository GitHub remoto. Quando cloni un repository con git clone, crea automaticamente una connessione remota chiamata origin che punta di nuovo al repository clonato. Il comando remote viene utilizzato per gestire set di repository monitorati.

    git remote aggiungi origin https://github.com/hiteshsahu/Hassium-Word.git

Sincronizzare

  • Ora dobbiamo unire il codice locale con il codice remoto. Questo passaggio è fondamentale, altrimenti non saremo in grado di inviare codice su GitHub. Devi chiamare 'git pull' prima di spingere il tuo codice.

    git pull origin master --allow-unrelated-histories

Commetti il ​​tuo codice

  • Infine, invia tutte le modifiche su GitHub

    git push -u origine master


1
Ho eseguito "git pull" come descritto in questo post e ho ottenuto un errore. Ho continuato con "git push" che è stato accettato e quando vado su Bonobo Git Server, ora posso vedere il cambiamento. Grazie per questo post con chiare spiegazioni sul comando GIT.
schlebe,

Cosa significa: "e copia l'URL del tuo progetto e copia l'URL del progetto." È un errore di battitura o stai cercando di parlare di due URL diversi o?
Gwideman,

Questo è un errore di tipografia, è sufficiente copiare l'URL del progetto come mostrato nella schermata
Hitesh Sahu

2
Questa è la risposta corretta e dovrebbe essere quella accettata. Nella risposta accettata manca il passaggio "Sincronizza".
Ilan,

28

Ecco la mia soluzione:

git init
git remote add origin PATH/TO/REPO
git fetch
git checkout -t origin/master

Buona soluzione quando si configura un repository remoto con .gitignore&README.dm
Hattori Hanzō

12

Nel caso in cui il repository remoto non sia vuoto (questo è il caso se si utilizza IBM DevOps su hub.jazz.net), è necessario utilizzare la seguente sequenza:

cd <localDir>
git init
git add -A .
git pull <url> master
git commit -m "message"
git remote add origin <url>
git push

MODIFICA 30 gennaio 17: vedere i commenti di seguito, assicurarsi di essere nel repository corretto!


I comandi precedenti hanno cancellato tutte le mie build esistenti :( Prestare attenzione prima di eseguire i passaggi precedenti
Selenium Framework

7

Quando un repository github non è vuoto, come .gitignore e licenza

Usa pull --allow-unrelated-histories e push --force-with-lease

Usa i comandi

git init
git add .
git commit -m "initial commit"
git remote add origin https://github.com/...
git pull origin master --allow-unrelated-histories
git push --force-with-lease

1
Avevo bisogno di modificare quest'ultima affermazione per git push -u origin master --force-with-lease
renderla

2

Il modo più semplice di fare ciò che trovo utile è il seguente.

Questo potrebbe non essere il modo ufficiale ma funziona bene.

Supponiamo di avere un progetto chiamato " XYZ" sul tuo PC. Ora vuoi fare un repository git di questo progetto su github e usare le sue funzionalità.

Passaggio 1 : vai a " www.github.com"

Passaggio 2 : crea un repository con un " README.md" file (chiamalo come preferisci)

Passaggio 3 : clonare il repository sul PC.

Passaggio 4 : nella cartella clonata otterrai due elementi: " .git" cartella e un README.mdfile " ". Copia questi due nella cartella del progetto " XYZ".

Passaggio 5 : eliminare il repository clonato.

Passaggio 6 : aggiungi, esegui il commit e invia tutti i file e le cartelle del tuo progetto.

Ora, puoi semplicemente usare il tuo progetto " XYZ" come repository git.


0

Ho avuto un problema simile. Ho creato un nuovo repository, NON NELLA DIRECTORY CHE VOGLIO REALIZZARE UN REPOSITORY . Ho quindi copiato i file creati nella directory che volevo creare un repository. Quindi aprire un repository esistente utilizzando la directory in cui ho appena copiato i file.

NOTA: ho usato github desktop per creare e aprire il repository in uscita.


0

Ecco la mia soluzione se hai creato il repository con alcune impostazioni predefinite readme fileolicense

git init
git add -A
git commit -m "initial commit"   
git remote add origin https://<git-userName>@github.com/xyz.git //Add your username so it will avoid asking username each time before you push your code
git fetch
git pull https://github.com/xyz.git <branch>
git push origin <branch> 
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.