2012-04-18 12 views
24

Ho un repository git che hanno seguenti cartelle:Posso avere un repository git nidificato all'interno di una cartella ignorata da git?

_includes/ 
_layouts/ 
_plugins/ 
_posts/ 
_site/ 

cartella _SITE viene aggiunto nel file .gitignore.

Ora posso avere un repository git all'interno della cartella _site con repository remoto diverso per push and pull? Ci saranno conflitti?

Ho studiato sottotitoli git ma penso che sarebbe un eccesso nel mio caso, se il metodo sopra indicato può funzionare.

+0

Sarei sorpreso se funziona, e anche se lo fa si possono avere sorprese in quanto non è destinato/progettato per funzionare. I sottomoduli Git non sono esagerati, basta un po 'di tempo per capire le basi :) – CharlesB

+0

Anche stando fuori dai sottomoduli, perdi la possibilità di dire al repository principale quale revisione '_site' è a – CharlesB

+0

" perdi la capacità di dire al principale repo quale revision _site è in "Ma' _site' è in '.gitignore', quindi il repository principale non sa nulla della cartella' _site'. –

risposta

14

Penso che dovrebbe funzionare. Per il repository principale, la cartella _site non esiste. Quindi quello che hai dentro non importa. Quando si cd in _site si sarà su tale repo indipendente.

+14

Tuttavia, tieni presente che potrebbe causare alcuni problemi. Uno dei problemi è che 'git clean -dfx' nel repository esterno rimuoverà il repository annidato. Quindi, l'utente deve stare attento. Forse sarebbe meglio collegare un link simbolico alla cartella. In caso di esecuzione di 'git clean', il collegamento simbolico verrà rimosso e il repository annidato rimarrà intatto. – Yamaneko

+0

Bel punto! Non lo sapevo! –

6

Sì, l'ho appena provato. Ecco la mia sessione da riga di comando:

$ mkdir temp 
$ cd temp 
$ git init 
Initialized empty Git repository in /Users/mpdaugherty/temp/.git/ 
$ git add . 
$ git status 
# On branch master 
# 
# Initial commit 
# 
nothing to commit (create/copy files and use "git add" to track) 
$ echo 'ignore' >> .gitignore 
$ git add . 
$ git commit -a -m 'first commit' 
[master (root-commit) 17d293c] first commit 
1 files changed, 1 insertions(+), 0 deletions(-) 
create mode 100644 .gitignore 
$ mkdir ignore 
$ git status 
# On branch master 
nothing to commit (working directory clean) 
$ cd ignore 
$ git init . 
Initialized empty Git repository in /Users/mpdaugherty/temp/ignore/.git/ 
$ echo 'Some text' > somefile.txt 
$ git status 
# On branch master 
# 
# Initial commit 
# 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
# somefile.txt 
nothing added to commit but untracked files present (use "git add" to track) 
$ git add . 
$ git commit -a -m 'initial commit' 
[master (root-commit) 107f980] initial commit 
1 files changed, 1 insertions(+), 0 deletions(-) 
create mode 100644 somefile.txt 
$ cd .. 
$ git status 
# On branch master 
nothing to commit (working directory clean) 
Problemi correlati