comandos git
TRANSCRIPT
5/12/2018 Comandos Git - slidepdf.com
http://slidepdf.com/reader/full/comandos-git-55a4d44c77412 1/7
Git***********************---------------------------------
Conceptos en resumen
- Tres Estados o AreasArea de trabajo
Area de Preparacion --stagedArea de Repositorio
- VersionamientoTag = Etiquetastag -a = Etiqutas anotadas - objeto con informacion propia - apunta a un committag = etiqutas ligeras - apuntador a un commit
- Ramas Branchlineas de desarrollomaster = la rama por omision de git (rama por defecto)se puede crear una rama llamada develop que se puede usar como rama de desarroll
o.feature branch = son ramas para añadir algo concreto - ramas temporales - de cortavida.
- Uniendo Ramas - MergeFast-forward = es cuando en la union simplemente cambia el puntero.
- Repositorios Remotoslos repositorios
- Glosario
commit = revisionchecksum = hash SHA-1 = identificador unico de archivos y objetosHEAD = apuntador de la rama donde me encuentro trabajando.
-El flujo de trabajo básico en Git es algo así:--Modificas una serie de archivos en tu directorio de trabajo.--Preparas los archivos, añadiendo instantáneas de ellos a tu área de preparación.--Confirmas los cambios, lo que toma los archivos tal y como están en el área de preparación, y almacena esa instantánea de manera permanente en tu directorio de Git.
Dos tipos de Repositorioslos Bear - Sin Area de Trabajo - son repositorios pelaoslos Normales - Con Area de trabajo.
Comenzando Git
Configuracion - usuario y email.$ git config --global user.name "Helbert Arias"$ git config --global user.email [email protected]
Ayuda$ git help <comando>
5/12/2018 Comandos Git - slidepdf.com
http://slidepdf.com/reader/full/comandos-git-55a4d44c77412 2/7
$ git help config$ git <comando> --help
Inicia Repositorio$ git init
adicionar al area de preparacion --staged(agrega al control de versiones)$ git add archivo.txt
incluir archivos al contro de versiones$ git add ./\*.php ./\*.js ./\*.css ./\*.html ./\*.htm$ git add ./\*.jpg ./\*.gif ./\*.png$ git add ./\*.map ./\*.bat
hacer commit para enviar al repositorio - revision$ git commit -m "Primer commit"
hacer commit omitiendo el sataged osea que commitea todo$ git commit -a
deshacer ultma confirmacion o revision - volver a hacer la confirmación$ git commit --amend
ver objeto commit - del apuntador Head$ git cat-file -p HEAD
ver cheksum Head$ git cat-file -p HEAD:
listando etiquetas$ git tag
listar etiquetas con filtro$ git tag -l 'v1.4.2.*'
Crear etiqueta anotadas (publicas) para versionamiento$ git tag -a v1.0 -m "version 1.0" HEADotro ejemplo$ git tag -a v1.4 -m 'my version 1.4'
ver informacion etiqueta$ git show v1.4
ver objeto tag$ git cat-file -p v1.0
ver movimiento del aputador HEAD$ git reflog
5/12/2018 Comandos Git - slidepdf.com
http://slidepdf.com/reader/full/comandos-git-55a4d44c77412 3/7
ver estado de git - para ver que esta dentro y fuera del staged$ git satatus
ver diferencia entre estados
ver la diferencia entre el staged si hay si no el ultimo commit y los archivos modificado(que fue lo ultimo que se cambio)$ git diff
ver la diferncia entre la ultima revision (commit) y el staged(que es lo que voy a adicionar en un nuevo commit)$ git diff --staged
ver la diferencia entre el ultimo commit y el area de trabajo ominiendo el staged(que es todo lo nuevo con respecto al ultimo commit)
$ git diff HEAD
comparacion entre los dos ultimos commits$ git diff HEAD^ HEAD
hacer la comparacion con una heramienta grafica tkdiff$ git difftool --tool=tkdiff HEAD^ HEAD
comparacion a un archivo especifico$ git difftool --tool=tkdiff HEAD^ HEAD informes/preimpresa_informe_auditoria/preimp_informe_auditoria.php
deshacer o descarta cambios en el area de preparacion (borrar lo que hay en areade preparacion)$ git reset
descarta cambios en el area de trabajo o recupera del area de preparacion o delultimo commit$ git checkout -- file
elimina el archivo (pero si tiene modificaciones advierte y no lo deja borrar)(para que se haga primero un commit y en proximo commit se borre)prepara para borrado$ git rm archivo.txt
fuerza la elimacion del archivo completamente.$ git rm -f archivo.txt
borra el archivo del area de preparacion para no ser incluido en el proximo commitpero no lo borra del area de trabajo.(quitarlo del control de versiones)$ git rm --cached archivo.txt
5/12/2018 Comandos Git - slidepdf.com
http://slidepdf.com/reader/full/comandos-git-55a4d44c77412 4/7
ver Revisiones (commits) y tags en interfaz grafica$ gitk
ver en interfaz web$ git instaweb
busca determinada palabra o frase en los archivos bajo control de versiones$ git grep palabra
ver historial de commit -$ git log
otra froma mas resumida$ git log --pretty=oneline
historial grafico (tags, HEAD, ramas)$ git log --graph --pretty=oneline --decorate=short --abbrev-commit
historial que tenga una palabra$ git log -Stexto
ver los parches con las diferencias$ git log -p
ver los parches$ git log --stat
clonar un repositorio remoto$ git clone https://neptuno.uca.es/git/sandbox-git
tambien con el protocolo git propio$ git clone git://git.kernel.org/pub/scm/git/git.gitcambiando el nombre de la carpeta destino$ git clone https://neptuno.uca.es/git/sandbox-git sandbox2
ver que ramas hay locales$ git branch
ver ramas remotas$ git branch -r
crear una rama (sintaxis: git branch nombre_rama revision)$ git branch mirama HEAD
borrar rama (si hay perdida de datos no deja borrar la rama)$ git branch -d mirama
cambiar entre ramas$ git checkout mirama
ver historial ramas con gitk - Entorno grafico$ gitk master mirama
seguir rama remota (crea una rama local apartir de una remoto) y ubican el puntero en la nueva rama creada- las ramas remotas no se pueden modificar
5/12/2018 Comandos Git - slidepdf.com
http://slidepdf.com/reader/full/comandos-git-55a4d44c77412 5/7
$ git checkout -b rama_sigue_remota rama_remota
unir o combinar ramas$ git merge rama_a_combinar
resolucion de conflictos
ver que herramientas tengo (ojo es recomendable tener tkdiff instalado)$ git mergetool
Opcionalmente - Muy Recomendable - Para Windows instalar tkdiff.exe y luegocopar el archivo C:\Archivos de programa\TkDiff\tkdiff.exe a C:\Archivos de programa\Git\bin\y luego ya se puede utilizar tkdiff asi:$ git mergetool -tool=tkdiff
tambien se puede quedar con una versio o otra en la resolucion de conflictosnos quedamos con lo que teniamos$ git checkout --ours
nos quedamos con lo que reunimos$ git checkout --theirs
o tambien podemos editar los marcadores a mano que genera git por el conflictoy luego git add y git commit
Enviando a Repositorio remoto - Pushsintaxis$ git push URL origen:destino$ git push repositorio_remoto_destino rama_local:rama_remotaejemplos$ git push ~/"Mis documentos/sandbox2/.git" eje3:eje3sin especificar rama remota significa que es la misma$ git push ~/"Mis documentos/sandbox2/.git" eje3si no pongo especifico ramastodas la ramas que se llamen igual de mi repositorio en el repositorio remoto seactualizaran$ git push ~/"Mis documentos/sandbox2/.git"
actualizar del repositorio que clone$ git push origin
Recibir de Repositorios remotos - Fetchactualiza el repositorio local de todos los repositorios remotos(si hay 5 repositorios ligados de los 5 actualiza)$ git fetch --all
luego hacer un merge de la rama remota a la rama local para traerme las actualizacionesque recibi por el fetch
la orden para hacer las dos cosas el fetch y el merge - Pull ???????sintaxis$ git pull repositorio_remoto rama_local:rama_remota
5/12/2018 Comandos Git - slidepdf.com
http://slidepdf.com/reader/full/comandos-git-55a4d44c77412 6/7
actualiza cambios del original sin parametros$ git pull
crear alias o apodos a repositorios remotos$ git remote add alias URLejemplo
$ git remote add gitorious git://gitorious.org/curso-git-osluca/mainline.git
ver estado del repositorio remoto (con el alias)$ git remote show gitorious
Crar un archivo comprimido del proyecto en su estado actual para distribucion$ git archive -o latest.zip HEAD
# Descartar todos los cambios (eliminando/añadiendo archivos) y# volver a un estado concreto del proyecto:
# ¡Cuidado! ¡Esto elimina todos los commits hechos!# No aplicarlo en commits anteriores a un git-push, ya que# no podremos hacer push sobre el repositorio remoto.git reset --hard HASH
# Para forzar el push en el repositorio remoto (NO RECOMENDABLE):git push origin +master
# recuperar commits eliminados:git reflog
# una vez identificado el commit a recuperar, hacer:git reset --mixed HASH
# ojo que este borrar los archivos modificados y del stagegit reset --hard HASH
# modificar un antiguo commit (se modifica sólo ese commit):git revert HASH
# Por defecto, reflog almacena los commits de los últimos 90 días.# A partir de esa fecha, git-gc eliminará los commits de más de 90 días.# Para modificar la duración, hacemos:git config --add gc.reflogexpire [ 30.days 30.minutes 30.seconds ]
# Crear un repositorio desnudo (sin carpeta de trabajo)git clone --bare .git ../para_server/gci_pg_cardif.git
# Crear un repositorio desnudo (sin carpeta de trabajo) (con la opcion -l local)git clone --bare -l .git ../para_server/gci_pg_cardif_2.git
También puedes añadir la opción -v, que muestra la URL asociada a cada repositorio remoto:git remote -v
5/12/2018 Comandos Git - slidepdf.com
http://slidepdf.com/reader/full/comandos-git-55a4d44c77412 7/7
############### Trabajando con repositorios remotos ######################git Push -> Enviagit Pull <- Recibe - para recuperar y unir automáticamente la rama remota con tu rama actual. - recupera la información del servidor del que clonaste, y automáticamente se intenta unir con el código con el que estás trabajando actualmente.git Fetch <- Recibe - recupera toda la información enviada a ese servidor desde que lo clonaste (o desde la última vez que ejecutaste fetch).
git clone <- Clona o Recibe un repositorio remoto - automáticamente configura tu rama local maestra para que siga la rama remota maestra del servidor del cual clonaste
# renombrar repositorio remotogit remote rename pb paul
# renombrar repositorio remotogit remote rm paul
### Copiar al Servidor
scp id_rsa.harias.pub [email protected]:/tmp/
## enviar repositorio sin adicionar remoto todas las ramasgit push --all [email protected]:gci_pg_cardif
## enviar repositorio sin adicionar remoto todas las etiquetas (versiones)git push --tags [email protected]:gci_pg_cardif
#gitolite - enviar repositorio
git push --all git@server:reponamegit push --tags git@server:reponame