Cuando vas avanzando en tu rama de trabajo, pero necesitas uno de esos commits en el head de otra
/*Estas trabajando tranquilamente y llevas varios commits en la rama readme*/
'git checkout readme'
//estos son tus commits
'git commit -am "creditos a DBZ"'
'git commit -am "creditos a DBGT"'
'git commit -am "creditos a DB super"'
//tu jefe lo ve y dice que solo quiere el de DBZ, el primero
//primero identifica el hash
'git log --oneline'
//ahora si tomamos el commit ese que queremos desde la rama en la que lo quieres
'git checkout master'
'git cherry-pick o2342kj'//esta es la unica linea importante aqui
//esto me hara ver en el log como si ese commit ubiera ocurrido en master
//una vex termino de hacer mis cosas mando mi todos mis comits a master
'git checkout readme'
'git commit -am "creditos a DB"'
'git checkout master'
'git merge readme'
//arreglar conflictos
'git push origin master'
//vemos los logs en GH para que veas que la rama readme nunca existio
Cuando ya hiciste muchos commits pero solo quieres obtener uno de ellos
//estas en branch readme e hiciste cambios, pero deberian ir en otra rama
'git stash'
'git stash branch readme-mejorado'
'git commit -am "creditos a DBZ"'
//pero sigues agregando cambios
'git commit -am "creditos a DBGT"'
'git commit -am "creditos a DB super"'
// te dicen que solo quieren el primer commit los otros dos no
//verificas cual es el hash del commit querido
'git log --oneline'
//cambias a la rama a la que quieres ese commit
'git checkout master'
//tomas el commit querido
'git cherry-pick ds34352'
//veras tu el commit querido como el ultimo
'git log --oneline'
Es mejor de alguna manera hacer un merge hacia master para mantener la historia de master
Traer un archivo de otra branch
# digamos que editamos dos archivos
# readme.md
# copyright.md
git add .
# pero no estamos seguros si el copyright si debe tener estos cambios
# asi que lo quitamos de staged
git reset HEAD copyright.md
# ahora queremos que regrese a como estaba al principio
# git reset --hard HEAD menu.txt # no funcionara
# traemos el archivo de tal rama o comit
git checkout HEAD copyright.md
# guardamos
git commit -m "only readme added"