remove - git rename tag




Git-Archiviare i rami in directory locali separate (2)

I branch sono cittadini di prima classe in Git, il che significa che non sono "emulati" come rami come nei vecchi VCS (SVN, CVS, ...)

Se hai davvero bisogno di tre diverse directory, perché vuoi avere tre distinti ambienti di sviluppo, crea 3 cloni:

  • uno in una directory chiamata master
  • uno in una directory chiamata imp_1
  • uno in una directory chiamata imp_2

Ma per capire davvero i rami, puoi leggere " Pro e contro dei diversi modelli di ramificazione in DVCS ".

Oppure, da Git 2.5 (luglio 2015, 4 anni dopo la domanda dell'OP), come ho rilevato in più directory di lavoro con Git? , usa git worktree .

Quello sarà un clone, più cartelle (una per ramo).
Con Git 2.7+, puoi elencare queste cartelle:

$ git worktree list
/path/to/bare-source            (bare)
/path/to/linked-worktree        abcd1234 [master]
/path/to/other-linked-worktree  1234abc  (detached HEAD)

Sono piuttosto nuovo da git e sto cercando di impostare il mio repository nel modo giusto.

Fondamentalmente la mia app è una sorta di piattaforma, quindi le implementazioni di questa piattaforma sono basate sul ramo master, ma hanno alcune piccole modifiche a questi file e alcuni file aggiuntivi.

Ho provato a configurarlo come branch, quindi ho un master branch, implementation_1 e implementation_2 .

Ma per quanto posso dire, ciò significherebbe che localmente tutti i rami sono memorizzati in una directory, con la loro separazione essendo solo attraverso git.

Quello che vorrei è avere 3 directory locali, master , imp_1 e imp_2 . Se imp_1 una modifica a uno dei file principali nella directory imp_1 , voglio essere in grado di unire quella modifica nel ramo master e da lì in imp_2 .

Sto iniziando a pensare che questi devono essere 3 diversi repository (le implementazioni sono le forcelle del core). E 'la strada da percorrere? In tal caso, come andrei a gestire lo scenario di cui sopra?


Puoi farlo usando git worktree che è stato introdotto in Git 2.5, circa luglio 2015 .

git clone -b master <repo> master
cd master

# checking out implementation_1 in ../imp_1
git worktree add ../imp_1 implementation_1

# creating branch implementation_2 at master~2 as you check it out in ../imp2:
git worktree add -b implementation_2 ../imp_2 master~2

E voilà! Hai finito.

Con questa configurazione, avrai una sola cartella .git (in master / .git). Si noti che ogni ramo può essere estratto in un unico albero di lavoro alla volta.







version-control