Come detto da altri è possibile utilizzare stash
o checkout --merge
. Quelle opzioni tuttavia causeranno un cambiamento nel timestamp di alcuni file. Se stai lavorando su un progetto di grandi dimensioni in cui la compilazione può richiedere molto tempo (il nostro progetto attuale richiede mezz'ora per la compilazione con build distribuite), questo potrebbe non essere ottimale.
In questa situazione, è possibile utilizzare un altro repository per spostare il commit sul ramo corretto. In primo luogo, è necessario clonare il repository corrente (questo bisogno di essere fatto solo una volta):
$ git clone /path/to/repository repository.clone
$ cd repository.clone
$ git remote add origin repository.clone
$ git fetch origin
Poi, nel tuo archivio corrente, i vostri cambiamenti:
$ cd /path/to/repository
$ git add path/to/modified/files
$ git commit -m 'Commit message'
D'altra repository , si recupera il nuovo commit, e spostarlo al ramo corretto:
$ cd ../repository.clone
$ git fetch origin
$ git checkout correct-branch
$ git reset --hard origin/correct-branch
$ git cherry-pick origin/current-branch
$ # resolve conflicts if any, commit with -c option in this case
$ git push origin correct-branch:correct-branch
Poi sul repository originale, rimuovere il commit temporanea, e rimuovere la modifica associata (tranne se si vuole k emettile in entrambi i rami).
$ cd /path/to/repository
$ git reset HEAD^
$ # edit file and remove modifications moved to other branch
questo è più complessa e coinvolge la storia riscrittura, ma quando il progetto sono veramente grandi, e tempo di compilazione è un fattore limitante, può essere grande per conoscere la tecnica. Si noti che è possibile riutilizzare il repository clonato, quindi non è necessario eliminarlo/ricrearlo ogni volta (se il tempo di compilazione è lungo, il repository è probabilmente grande e la clonazione può richiedere del tempo).
Dolce. Devi solo assicurarti che i tuoi cambiamenti siano messi in scena. Funziona perfettamente. – helios
molto lucido, sicuramente qualcosa di nascosto rende davvero facile fare – Martin