2012-01-17 16 views
18

Ho un progetto Xcode che ha Git Source Control. In una cartella Librerie Ho clonato altri otto progetti Git dal GitHub. Si trovano all'interno del mio repository Git e ho aggiunto tutte queste librerie al mio git in un commit.Git: Come gestire le librerie git nel progetto

Invece di avere il codice di tutte queste librerie git nel mio repository, c'è un modo per permettere a git di scaricare il loro codice dal repository quando faccio un clone del mio repository? O è normale includere altri repository git all'interno di un progetto?

+0

http://stackoverflow.com/questions/2140985/setup-a-git-external-for-remote- repo – tobiasbayer

risposta

24

Certo effettuare le seguenti operazioni:

  1. Rimuovere il 3rd-party-cartella che si potrebbe avere aggiunto già
  2. Aprire il Terminale ed eseguire il seguenti comandi

    cd /path/to/your/main/repo 
    git submodule add [email protected]:someuser/somerepo.git somerepo 
    git commit -m "Added submodules" 
    
  3. Ora, invece di copiare i file avrete un riferimento all'altro repository nel progetto:

    http://i.minus.com/jcphKnFxLexk8.png

Edit:

Ora, se si desidera aggiornare il modulo per un commit più recente è possibile effettuare le seguenti operazioni:

cd somerepo 
git pull # You can also checkout a branch/tag etc. 
cd .. 
git add somerepo 
git commit -m "Telling the main repo to update the reference to the referenced repo" 
+0

Grazie. Non potrei usare questo invece? Git submodule aggiungi https://github.com/AlanQuatermain/AQGridView.git Libraries/AQGridView' invece di '[email protected]: ...'? – dhrm

+0

Come posso aggiornare questi sottomoduli? Vengono tirati automaticamente quando prendo il mio repository o devo entrare nella loro cartella e fare un 'git pull'? – dhrm

+0

@DennisMadsen Sì, è possibile eseguire un pull Git che esegue qualsiasi modifica in 'somerepo', tuttavia è necessario indicare al repository principale di aggiornare anche il riferimento. Vedi il mio post aggiornato. BTW: Trovo i sottomoduli abbastanza utili dato che non devi duplicare il codice dai repository, che sono già accessibili per te tramite git. – Besi

Problemi correlati