############################################# # Push de la rama actual git push origin $rama_actual ############################################# # Volver a un commit anterior, descartando los cambios git reset --HARD $SHA1 ############################################# # Ver y descargar Ramas remotas git remote show origin # Si hay alguna rama de la cual no tengamos los datos aún git fetch origin # Obtener la rama remota git checkout --track -b $rama origin/$rama # más simple git checkout -t origin/$rama git branch -a # * master # remotes/origin/HEAD -> origin/master # remotes/origin/baremacion # remotes/origin/bootstrap # remotes/origin/fallo_registro # remotes/origin/master git checkout -b baremacion remotes/origin/baremacion ############################################# # Crear una rama basada en el HEAD git branch $branch # Crear una nueva rama basada en el branch $other git checkout -b $new_branch $other # Eliminar una rama local git branch -d $branch # Eliminar una rama remota git push origin :$branch # Eliminar las ramas remotas que ya no existan en origin (Ambos comandos hacen lo mismo) # Ejecutar con --dry-run para ver los cambios que realizará git fetch -p git remote prune origin ############################################# # Cambiar el nombre de una rama git branch -m $nombre_rama_anterior $nombre_rama_nuevo ############################################# # Ignorar el salto de línea en Git http://help.github.com/line-endings/ git config --global core.autocrlf input ############################################# # Copiar un commit determinado a una rama cualquiera git checkout $rama git cherry-pick $SHA1 ############################################# # Trabajando con tags # Ver los tags locales git tag # Añadir un tag git tag -a v1.2 $SHA1 # Subir tags al repositorio git push --tags ############################################## # Deshacer el último commit (sin haber hecho push) git reset --soft HEAD~1 # Deshacer el último commit (habiendo hecho ya un push) git revert HEAD ############################################## # Subir a la rama Commits parciales (los ficheros que no añado se quedan en el stash y se recuperan luego) git add $file git commit -m "Mensaje" git stash git pull --rebase origin $rama git push origin rama git stash pop # list commits not pushed to the origin yet git log origin/master..master # list remote branches that contain $commit git branch -r --contains $commit # Deshacer el último commit (dejándolo como estaba con los archivos añadidos y demás) git reset --soft HEAD^ # Modificar el último commit (incluye los archivos añadidos) git commit --ammend -m "Nuevo mensaje" ############################################## # Reescribiendo la "historia" # - Deshacer commits # - Unir commits # - Reordenar commits # - ... git rebase -i HEAD~10 # Esto mira los 10 últimos # Y veremos algo como esto: pick ce2b738 Commit message 1 pick 2a3cdf7 Commit message 2 # Y podremos realizar las siguientes operaciones sobre los commits # inlcuyendo reordenar los commits # p, pick = use commit # r, reword = use commit, but edit the commit message # e, edit = use commit, but stop for amending # s, squash = use commit, but meld into previous commit # f, fixup = like "squash", but discard this commit's log message # x, exec = run command (the rest of the line) using shell # Establecer la fecha de los commits anterior al rebase => git committer date = git author date git filter-branch --env-filter 'GIT_COMMITTER_DATE=$GIT_AUTHOR_DATE; export GIT_COMMITTER_DATE' ..HEAD ############################################## # Recuperarse de un desastre http://www.bluemangolearning.com/blog/2009/03/recovering-from-a-disastrous-git-rebase-mistake/