2012-03-22 13 views
7

Ho tre rami (chiamiamoli master, testing e funzionalità). Tutti e tre sono condivisi, quindi non posso rebase a nessuno di essi senza causare problemi agli altri. Attualmente, tutte e tre le filiali sono divergenti (nessuna è un avanzamento rapido), quindi alla fine sarà necessario eseguire alcune operazioni di fusione, poiché la reimpostazione non è un'opzione.Unisci singolo file senza rebasing

Per il momento, tuttavia, mi piacerebbe inserire il Makefile dal testing in feature, poiché la funzionalità è stata separata dal master e il Makefile è stato aggiunto in testing. Faccio non voglio unire in qualsiasi altra modifica tra i due rami, tuttavia.

La mia comprensione è che se ho appena git-add Makefile per feature, questo causerà conflitti di merge quando unisco nuovamente feature in testing (e poi master), specialmente se faccio ulteriori aggiunte al Makefile nel mio branch feature .

Potrei fare git-cherry-pick; tuttavia, nel test sono stati eseguiti più commit al Makefile e presumo che esista un modo migliore di provare a selezionare tutti i commit in feature.

risposta

12

Si può solo fare un

git checkout branch_name <path(s)>

Questo può caricare un file specifico, ma è anche possibile utilizzare i caratteri jolly e le directory

Nota che:

  • percorsi sono relativi
  • Il percorso fa sì che git non cambi rami, quindi puoi semplicemente eseguire il commit dopo averlo gettato file
+0

Wow - Ho utilizzato il checkout per passare a un commit tramite SHA, e su un file per tornare a HEAD, ma non mi ero reso conto che era possibile combinare i due in questo modo. Questo è piuttosto ovvio in retrospettiva ora, ma grazie! – chimeracoder