2013-02-22 21 views
5

Ho bisogno di tenere 3 rami in 3 cartelle separate. (So ​​che questo non è un modo per fare le cose, ma ho bisogno di farlo per una ragione).Git - cartella separata per ogni ramo. Configurazione

Diciamo che il nome di pronti contro termine è my_proj_repo.git ho creato una cartella chiamata prodv1 nel mio sistema locale:

git clone url:/my_proj_repo.git 

Ora sono andato nella cartella prodv1 e copiato i file da un server, quindi:

git commit -am "initial import" 
git push origin master 

Questo ha spinto i file a padroneggiare. Ora ho creato più di due cartelle come sopra nel mio sistema locale

stagingv1 
devv1 

voglio creare due sedi locali e remoti con i nomi:

staging // this local branch points (push/pull) to staging remote branch 
dev  // this local branch points ((push/pull) to dev remote branch 

E questi due rami dovrebbe essere nel corrispondente cartelle:

staging ==> stagingv1 folder 
dev  ==> devv1 folder 

Ho provato alcune cose e credo di averlo incasinato. Qualcuno potrebbe indicarmi i comandi/i passaggi per ottenere tutte queste impostazioni come volevo?

Quello che ho fatto è stato, è entrato nella cartella stagingv1 e ha fatto un git clone <repo>. Tuttavia, il valore predefinito è master. E non sono sicuro di come inizializzare il ramo staging qui.

+4

Come non è il "modo di fare le cose"? I progetti separati dovrebbero essere la loro propria diramazione, se non un nuovo repository. Altrimenti avere progetti diversi sullo stesso ramo ingombrerà la storia con la storia di altri progetti. – NoBugs

risposta

8

penso che si potrebbe avere per creare tutta la filiale nella vostra repo

$ git branch <name_of_your_new_branch> 

Quindi creare tutte le cartelle e in ciascuno di cartella Clonare il repo, ma checkout i rami appropriati.

Ogni cartella deve/può tracciare solo il ramo appropriata

Step 1 $ git branch [name_branch#1] 

Step 2 $ git branch [name_branch#2] 

Step 3 $ git branch [name_branch#3] 

...

Step 4 $ git push --all 
Step 5 md Folder #2 
Step 6 $ git clone [URL] 
Step 7 $ git checkout [name_branch] 
+0

Puoi scrivere i passi del comando git? –

+0

Grazie fantastici! –

+0

@KevinRave Ho scritto il passo, potresti dover regolare i comandi ma penso che le idee ci siano. – JudgeProphet

2

Cosa si vuole raggiungere è diventato più semplice (o anche banale) dal git 2.5 ha introdotto il git worktree comando.

In sostanza, il vostro il vostro repo git ha un numero ormai completamente priva di rami controllato, chiamato albero di lavoro:

  • 0 (un nudo repo)
  • 1 (un repo normale)
  • n> 1, un repo normale in cui si è aggiunto n-1 alberi di lavoro

Se il repo contiene già la vostra filiale, si può fare:
git worktree add <path to branch> <branch name>
O, se quel ramo non è ancora creata e si desidera diramano maestro:
git worktree add -b <new branch name> <path to branch> master

ci si va. Si noti che non è possibile eseguire il checkout di una filiale in più repository contemporaneamente.