2010-06-25 11 views
5

io uso il flusso di lavoro git come descritto in this blogpost. In breve: tutti si sviluppano all'interno del proprio ramo, prima di unirsi nuovamente al master, si può rebase il ramo da padroneggiare nuovamente per ottenere una cronologia pulita.git: come ottenere le modifiche correttamente in master quando si lavora con i sottomoduli

Questo funziona.

Ora abbiamo un sottomodulo e poiché questo è un plug-in interno (Rails), è necessario cambiarlo spesso. Quindi la maggior parte delle volte ho delle modifiche sia nel ramo generale che nel ramo del sottomodulo.

Qual è il modo migliore per lavorare con i sottomoduli nel flusso di lavoro come sopra.

Prima provo a inviare le modifiche al sottomodulo (git checkout master, git pull, git checkout branch, git rebase master, git checkout master, git merge branch).

Quindi, quando provo a fare lo stesso per la mia radice, ottengo sempre un errore sul mio plugin (sottomodulo). Devo risolvere l'errore, prima di fare git rebase --continue. Quindi, se provi a git mergetool converti la mia cartella in un file.

Dopo che il rebase è terminato, ho appena ripristinato il <folder_name>.orig per sovrascrivere il file <folder_name> e tutto va bene.

Ma in qualche modo sembra che ci dovrebbe essere un modo migliore.

In breve: quando si lavora tramite checkout-b/rebase/merge - flusso di lavoro, come si gestiscono i sottomoduli modificati contemporaneamente?

risposta

2

Qualunque sia il flusso di lavoro che si sta seguendo with submodules, c'è una regola non si deve dimenticare:
(dal tutorial Git)

Se si vuole fare un cambiamento all'interno di un modulo, si dovrebbe innanzitutto verificare aprire una filiale, apportare le modifiche, pubblicare la modifica all'interno del sottomodulo e quindi aggiornare il superprogetto per fare riferimento al nuovo commit.

$ git checkout master 
$ echo "adding a line again" >> a.txt 
$ git commit -a -m "Updated the submodule from within the superproject." 
$ git push 
$ cd .. 
$ git add a  # There is a gotcha here. Read about it below. 
$ git commit -m "Updated submodule a." 

Allora, hai commesso il nuovo stato del modulo all'interno del progetto principale prima di tentare il tuo rebase/merge da detto progetto principale?

Problemi correlati