Lihuen
RSSRSS AtomAtom

Diferencia entre revisiones de «Git»

(Diffs y logs)
(Reescribiendo la historia)
Línea 128: Línea 128:
 
Haciendo que la historia sea lineal, corrigiendo comentarios de commits, etc...
 
Haciendo que la historia sea lineal, corrigiendo comentarios de commits, etc...
 
* http://git-scm.com/book/en/Git-Tools-Rewriting-History
 
* http://git-scm.com/book/en/Git-Tools-Rewriting-History
 +
 +
Separar un directorio en un nuevo repositorio Git con git subtree y eliminar la historia de los archivos borrados:
 +
* http://stackoverflow.com/questions/359424/detach-subdirectory-into-separate-git-repository/17864475
  
 
[[Categoría:Git]]
 
[[Categoría:Git]]
 
[[Categoría:Desarrollo]]
 
[[Categoría:Desarrollo]]

Revisión de 12:38 6 nov 2014

Documentación

Taller de Git

Recetas

Configuración

  • Configurar git para el usuario:
git config --global user.name "Pipo Perez"
git config --global user.email  "pperez@servidor.com" # Un mail que se pueda publicar
git config --global color.ui auto
git config --global core.editor vim
git config --global alias.lol 'log --graph --decorate --pretty=oneline --abbrev-commit'
git config --global alias.lola 'log --graph --decorate --pretty=oneline --abbrev-commit --all --date=local'
git config --global alias.unstage 'reset HEAD --'

Colores personalizados

Básicos

  • Inicializar un repositorio local
mkdir foobar
cd foobar
git init
  • Agregar quitar archivos
git add archivo
git rm archivo
  • Agregar cambios en un archivo
git add archivo
  • Status y commit
git status
git commit -m "Comentario"
  • Borrar archivos untracked
git clean -f

Para archivos untracked incluyendo los que estén en .gitignore:

git clean -f -x

Borrando archivos y enmendando el último commit

  • Para sacar un archivo de el área de staging (si le hicimos "git add" por accidente):
git reset HEAD -- <archivo>

o si se definió el alias unstage como se ve arriba:

git unstage <archivo>
  • Para deshacer los cambios de un archivo que no está commited:
git checkout -- <archivo>
  • Si faltó agregar o borrar algún archivo, o la descripción del último commit tiene errores:
git commit --amend
  • Para corregir el nombre y dirección de autor del commiter:
git commit --amend --author "Nombre Apellido <napellido@email.com>"
  • Para borrar un commit:
git reset --hard HEAD~1
git push --force origin HEAD

Remotos

  • Agregando servidores remotos
git remote add origin
  • Push (enviar cambios) del branch master a un remoto
git push origin master
  • Pull (recibir cambios) desde el branch master de un remoto
git pull origin master
  • Para configurar servidor origin y branch master por defecto para los push y pull, hay que ejecutar alguno de los siguientes comandos una sola vez:
git push --set-upstream origin master
git push -u origin master

Remotos con tags y branches

  • Push de todos los branches (locales) y push de todos los tags:
git push --all
git push --tags
  • Push de todas las refs (branches, tags y branches remotos):
git push --mirror
  • Eliminar una ref en un remoto:
git push --delete nombre_branch
git push :nombre_branch

Diffs y logs

  • Para comparar palabra a palabra cuando hay un conflicto y las líneas sean muy largas, primero debemos identificar los commit de los que se hicieron el merge, por ejemplo si uno es bba49bb, y el otro 834b27f, el comando sería:
git diff --word-diff=color bba49bb 834b27f
  • Comparar con commits anteriores:
git diff HEAD~1 # Commit padre
git diff HEAD~2 # Commit padre del commit padre
git diff HEAD^1 # Commit de un padre (para merges)
git diff HEAD^2  # Commit de otro padre (para merges)
  • Ver logs con dibujos de los branchs:
git log --graph --decorate
  • Ver quién modificó cada línea:
git blame archivo
  • Ver qué cambió en cada commit:
git whatchanged
  • Distintas formas de especificar una revisión:

http://git-scm.com/docs/gitrevisions.html

  • Ver la historia de commits:

http://git-scm.com/book/en/Git-Basics-Viewing-the-Commit-History

Crear branches nuevos y vacíos

Por ejemplo pueden ser útiles para las gh-pages de GitHub:

git checkout --orphan NUEVO_BRANCH
git rm -rf .

Eliminando archivos de la historia de Git (no hacer a menos que se justifique)

Reescribiendo la historia

Haciendo que la historia sea lineal, corrigiendo comentarios de commits, etc...

Separar un directorio en un nuevo repositorio Git con git subtree y eliminar la historia de los archivos borrados: