2012-02-15 13 views
10

Lavoro su una squadra su un repository di grandi dimensioni. Recentemente abbiamo deciso di spostare una delle cartelle nel proprio moduloSpostata la cartella nel sottomodulo, ora ricevendo "I file non tracciati verrebbero sovrascritti" messaggio

-- aaa 
    -- .git 
    -- bbb 
    -- ccc 
    -- www  # this folder is going into its own repo. 

Ho seguito le istruzioni per filtrare la cartella www nel proprio repository elencati qui: Detach (move) subdirectory into separate Git repository. Ho rimosso la cartella www dal repository aaa.

ho rimosso la directory dal ramo principale eseguendo questi comandi:

$ cd aaa 
$ git checkout master 
$ git rm -rf www 
$ git commit -m "remove the www/ folder from the aaa repo." 

Così ora sul maestro, l'albero si presenta così:

-- aaa 
    -- .git 
    -- bbb 
    -- ccc 

mi piacerebbe aggiungere www come un sottomodulo eseguendo:

$ cd aaa 
$ git checkout master 
$ git submodule add [email protected]:kevinburke/www.git www 
Cloning into 'www'... 
remote: Counting objects: 717, done. 
remote: Compressing objects: 100% (392/392), done. 
remote: Total 717 (delta 318), reused 711 (delta 317) 
Receiving objects: 100% (717/717), 440.52 KiB | 58 KiB/s, done. 
Resolving deltas: 100% (318/318), done. 

Che funziona bene sul master. Tuttavia, ogni volta che provo a passare a un altro ramo, ottengo il seguente errore:

$ cd aaa 
$ git checkout other-old-branch 
error: The following untracked working tree files would be overwritten by checkout: 
    www/1... 
    www/2... 
    www/3... 
    www/4... 
Aborting 

Come posso rimuovere la cartella www da tutti i rami del aaa repo? Ci sono circa 100 filiali, quindi farlo manualmente sarebbe una seccatura.

Non sono preoccupato di mantenere eventuali modifiche in sospeso esistenti nelle cartelle www di rami meno recenti.

risposta

15

Basta usare git checkout -f per scambiare rami, quindi rimuoverli come faresti normalmente e unirli in master per ottenere l'introduzione del sottomodulo.

Problemi correlati