Come faccio a copiare una versione di un singolo file da un ramo git a un altro?

Ho due rami che sono completamente uniti.

Tuttavia, dopo l’unione, mi rendo conto che un file è stato incasinato dall’unione (qualcun altro ha fatto un auto-formato, gah), e sarebbe stato più semplice cambiare la nuova versione nell’altro ramo, e quindi reinserire il mio cambio di riga dopo averlo inserito nel mio ramo.

Quindi qual è il modo più semplice in git per fare questo?

Esegui questo dal ramo in cui desideri che il file finisca:

git checkout otherbranch myfile.txt 

Formule generali:

 git checkout   git checkout /  

Alcune note (dai commenti):

  • Usando l’hash del commit puoi estrarre i file da qualsiasi commit
  • Questo funziona per file e directory
  • sovrascrive il file myfile.txt e mydir
  • I caratteri jolly non funzionano, ma i percorsi relativi lo fanno
  • È ansible specificare più percorsi

un’alternativa:

 git show commit_id:path/to/file > path/to/file 

Ho finito con questa domanda su una ricerca simile. Nel mio caso stavo cercando di estrarre un file da un altro ramo nella directory di lavoro corrente diversa dalla posizione originale del file. Risposta :

 git show TREEISH:path/to/file >path/to/local/file 

Che dire dell’utilizzo del comando checkout:

  git diff --stat "$branch" git checkout --merge "$branch" "$file" git diff --stat "$branch" 

Seguendo la risposta di madlep puoi anche solo copiare una directory da un altro ramo con il blob della directory.

 git checkout other-branch app/** 

Per quanto riguarda la domanda dell’op se hai cambiato solo un file, funzionerà bene ^ _ ^

1) Assicurati di essere nella filiale dove hai bisogno di una copia del file. ad esempio: voglio un file secondario in master in modo da poter effettuare il checkout o dovrebbe essere nel master git checkout master

2) Ora esegui il checkout del file specifico da solo dal sottopritesto al master,

 git checkout sub_branch file_path/my_file.ext 

qui sub_branch indica dove hai quel file seguito dal nome del file che devi copiare.