2009-09-10 22 views
5

Ho creato un repository git nudo (lo chiamiamo repo n. 1) e lo ho clonato.Creare un repository git che contenga un altro repository git

  • Nel clone (repository # 2) ho creato diverse cartelle, una delle quali ho deciso di creare un repo git (repo # 3).
  • Quando mi impegno a repo # 2, tutto gira come previsto tranne che il repository # 3 viene ignorato (la cartella .git, i file si impegnano).

Come posso aggiungere repo # 3 di pronti contro termine # 2 in modo che quando spingo repo # 2 di pronti contro termine # 1, posso fare un clone separata di pronti contro termine # 1 in cui posso anche accedere alla cronologia, ecc di repo # 3?

In altre parole. Come posso creare un repository git che contiene un altro repository git?

risposta

3

non dovresti farlo. I metadati sotto .git/vengono modificati durante la vita utile della repository e tali modifiche non significano necessariamente "modifiche nel contenuto" che devono essere confermate: semplice git repack cambia i file sotto .git ma tali modifiche non devono essere confermate. Perché vuoi farlo?

+0

Sto usando il repo genitore (# 2) per facilitare Backup delle cartelle che esso contiene, che comprende repo 3 #. Tutto è archiviato su un'unità USB e in questo modo posso facilmente inviare un backup di tutto alla mia posizione di backup (repo n. 1). Sembra che dovrò semplicemente copiare manualmente le cartelle per eseguirne il backup per ora. –

+0

Se tutto quello che vuoi è solo un backup di tutti i repository (e copie funzionanti), allora potresti semplicemente usare qualcosa che non sa nulla di git ant è la sua struttura, per esempio mercurial o bazaar. Come WRAR ha detto che aggiungerebbe molte cose di cui non hai bisogno, ma se vuoi solo un backup allora potrebbe essere ok. Ma potresti anche solo scrivere uno script che attraversi tutti i repository sul tuo stick e lo spinga al server. –

2

vedere git submodule

ho mai usato, quindi tutto quello che posso fare è postare un link ...

2

Io non sono un pro da GIT qualsiasi mezzo, ma penso che si fa riferimento a git sottomoduli

git submodule --help 
0

nella cartella principale del repository contenitore, basta fare:

git submodule add https://github.com/yourusername/containedrepo.git containedrepo 

Ciò clonare il containedrepo all'interno della directory /containedrepo. D'ora in poi, non dovresti apportare modifiche nella directory /containedrepo, ma piuttosto apportare modifiche nel e quindi estrarle. Quando si estrae il repository del contenitore principale, verrà estratto anche il repository di tutti i sottomoduli, ad es. containedrepo.git.

Ecco un tutorial: https://github.com/NebuPookins/git-submodule-tutorial

Problemi correlati