git chuleta
propósito
- chuleta propia sobre git
gitignore
- un buen tutorial sobre .gitignore
deshacer commits
- para deshacer un commit ya subido a remote
- lo primero es hacer un reset en el repositorio local
- se busca el identificador del commit al que quiere volver por ejemplo con git: View History de visual studio code
- luego se sube los cambios al remote con la opción -f que fuerza la subida
git reset <commit> --hard
git push -f origin master
contador de commits
- para saber el número de commits de un repositorio
git rev-list --count master
comandos
git whatchanged
- como
git log
pero más intuitivo por el nombre
git add
- La forma más fácil de guardar todos los cambios tanto las modificaciones como los borrados y archivos añadidos en el árbol de trabajo es
git add -A
git amend
para añadir uno o varios archivos a un commit y mantener el mensaje
git commit -m 'initial commit'
git add <nombreFicheroOlvidado>
git commit --amend
para cambiar el mensaje del último commit
git commit --amend
esto abre el editor para que puedas modificar el texto del mensaje- si el commit ya esta subido al remoto
git push -f
y se ve el cambio
git branch
- la rama en la que estas
git branch
* gh-pages
- con -a salen todas las ramas no solo las remotas
-r
-vv
verbose
doble con toda la información
c:\proyectos\hugo\javier-programacion>git branch -a -vv
* master bf44f57 [origin/master] el log de 22/04/2018
remotes/origin/HEAD -> origin/master
remotes/origin/master bf44f57 el log de 22/04/2018
- atención a la diferencia entre rama y remoto
- para este proyecto en concreto tengo solo una rama que es
master
pero que puede sergh-pages
en otros repositorios - este repositorio local esta conectado con un repositorio remoto llamado
origin
- cuando hago un
push
indico primero a que remoto subo que rama git push origin master
origin
es el alias que se le da al repositorio remoto al hacergit remote add origin .....
- pero podría tener más alias a repositorios remotos
rama oculta
- con
git branch -a
- sale una rama oculta que se usa cuando se lanza
git fetch
antes de hacer un merge - cuando se hace
git pull
se lanza ungit fetch
y ungit merge
- esta rama oculta también se usa lógicamente para saber que cambios cargarías a la rama local cuando se hace un
git pull
crear rama
git branch nueva_rama
borrar rama
git branch -d nombre_rama
# si la rama tiene trabajos sin fusionar y queremos forzar el borrado
git branch -D nombre_rama
# borrar la rama en remote
git push origin --delete <nombre rama a borrar>
renombrar rama
# desde otra rama
git branch -m old-name new-name
git branch -m nuevo_disegno nuevo_diseño
# desde la propia rama
git branch -m nuevo_diseño
git checkout
- cambia la rama activa del repositorio y deja el contenido de la rama actual en el directorio de trabajo
C:\cursos\miriadax\git_github\cal_2com>git branch -a
inverse
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
C:\cursos\miriadax\git_github\cal_2com>git checkout inverse
Switched to branch 'inverse'
C:\cursos\miriadax\git_github\cal_2com>git branch -a
* inverse
master
remotes/origin/HEAD -> origin/master
remotes/origin/master
git diff
- muestra los cambios que no están preparados es decir añadidos con
git add
git diff
diff --git a/gitChuleta.md b/gitChuleta.mindex a4ee01d..441188e 100644
--- a/gitChuleta.md
--- b/gitChuleta.md
@@ -52,7 +52,11 @@ en git 2.x almacena también los borrados
git reset --hard
Please, commit your changes or stash them before you can merge.
-
con
git diff --cached
puedes ver los cambios que llevas preparados hasta ahora -
una explicación más completa en la documentación de
git-scm
git diff con fetch
- para ver los cambios que se van a integrar en tu rama local en vez de hacer
git pull
se puede hacergit fetch origin master
lo que baja el repositorio remoto a la rama oculta que podemos ver congit branch -a
- luego para poder ver esos cambios podemos usar la herramienta
difftool
- podemos configurar git para que use visual studio code como editor de esas diferencias modificando el archivo
.gitconfig
[diff]
tool = vscode
[difftool "vscode"]
cmd = code --wait --diff $LOCAL $REMOTE
- de esta forma el comando
difftool master origin/master
saca archivo a archivo las diferencias preguntando si se usa visual para abrir el archivo y mostrar las diferencias - también se puede configurar en el archivo
C:\Proyectos\hugo\javier-bitacora\.git\config
para que el cambio sólo afecte a ese repositorio concreto
C:\Proyectos\hugo\javier-bitacora>git difftool master origin/master
Viewing (1/1): 'content/bitacora/2020/2020-08-24-bitacora.md'
Launch 'vscode' [Y/n]? y
- luego para fusionar lo que hemos bajado con git fetch a la rama en la que estamos trabajando hay que hacer
git merge origin/master
git grep
- para buscar una palabra en el repositiorio
- a explorar con ejemplos
git log
- muestra el historial de
commits
git log --oneline
- muestra la información en una sola línea
git log
- una entrada de blog sobre esto
- la salida con formato
git log --pretty=format:"%h - %an, %ar : %s"
- crear un alias para un fomato chulo
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
- luego se puede usar
git lg
ogit lg -p
para ver las diferencias
- luego se puede usar
git pull
- para actualizar la copia local con el repositorio remoto
git pull
C:\nube\MEGA\mundo>git pull
remote: Counting objects: 3, done.
remote: Compressing objes: 100% (3/3), done.
remote: Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
Unpacking objects: 10 (3/3), done.
From https://github.com/pelos6/mundo
a56588c..0d8d6f gh-pages -> origin/gh-pages
Updating a56588c..0d8d6f3
Fast-forward
miMundo.html | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
- para saber que recuperaríamos con
git pull
-- sobre el proyecto notas-programacion
git fetch origin
git diff origin/gh-pages --name-only
-
la opción
--name-only
muestra solo el nombre del archivo modificado -
origen de esta información
-
donde
gh-pages
es la rama con la que trabajamos en local y que subimos y descargamos del repositorio remotoorigin
-
git fetch
baja los cambios a una rama oculta y desde allí se consulta
git push
- La opción -u es la misma que
–set-upstream-to.
y sirve para indicar cual es el destino remoto por defecto
git tag
- para borrar un tag en local
git tag --delete v.1.0.21
- con
git tag
se ven los tags que hay - con
git fetch --tags
se cargan los tags del repositorio remoto - atención pues con git pull se carga el código pero no los tags
forzar un push para sobrescribir el remote
- si quiere que los cambio en local tengan prioridad sobre los del remoto
- -f de
force
- -f de
git push -f bitbucket master
git remote
- muestra la información de los repositorios remotos a los que estan conectado
PARA NO USAR CONTRASEÑA
git remote -v
# ves el remote que suele ser del tipo
origin https://javieriranzo3@bitbucket.org/javieriranzo3/epacf_adm_test.git (fetch)
# lo borramos
git remote rm origin
# creamos el nuevo remote que va por SSH sin necesidad de contraseña
git remote add origin git@bitbucket.org:javieriranzo3/epacf_adm_test.git
git remote add origin git@bitbucket.org:javieriranzo3/cypress_paddoc.git
origin https://javieriranzo3@bitbucket.org/javieriranzo3/cypress_paddoc.git (fetch)
git version
git --version
- git versión 2.10.2.windows.1
git config
- se puede editar directamente
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
[remote "origin"]
url = https://javieriranzo3:xxxxxxxx@bitbucket.org/javieriranzo3/javier-programacion.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
git config --list
core.symlinks=false
core.autocrlf=true
core.fscache=true
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
help.format=html
http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
diff.astextplain.textconv=astextplain
rebase.autosquash=true
credential.helper=manager
user.name=pelos6
user.email=javieriranzo@hotmail.com
gui.recentrepo=C:/nube/MEGA/programacion/git/first-contributions
gui.recentrepo=C:/proyectosGit/my_project
gui.recentrepo=C:/servidorGit
gui.recentrepo=C:/proyectosGit/prueba.git
gui.recentrepo=C:/nube/MEGA/programacion/HtmlCssEstatico/jekyll/notas-programacion
http.postbuffer=157286400
core.repositoryformatversion=0
core.filemode=false
core.bare=false
core.logallrefupdates=true
core.symlinks=false
core.ignorecase=true
remote.origin.url=https://javieriranzo3:pelos678@bitbucket.org/javieriranzo3/notas-programacion.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.gh-pages.remote=origin
branch.gh-pages.merge=refs/heads/gh-pages
gui.encoding=utf-8
gui.wmstate=zoomed
gui.geometry=584x210+104+104 483 430
- para configurar el editor que sale al hacer commit sin indicar el mensaje
git config --global core.editor notepad
paginar
-
core.pager
-
El parámetro
core.pager
selecciona el paginador utilizado por Git cuando muestra resultados de comandos tales como ‘log’ odiff
. Puedes ajustarlo para que utilice ‘more’ o tu paginador favorito, (por defecto, se utilizaless
); o puedes anular la paginación si le asignas una cadena vacía.
git config --global core.pager ''
-
Si lanzas esto, Git mostrará siempre el resultado completo de todos los comandos, independientemente de lo largo que sea este.
-
de
less
se sale conq
en modo dos puntos -
esto explica el problema con
diff
ylog
-
otra solución es sacar el resultado del comando a un fichero y consultarlo luego
git diff > diff.md
recuperar un archivo borrado
- sacado de este blog
git log --oneline --name-status --diff-filter=D -- **/figueras15entloIzdaInquilinos
- falta saber como salir de la edición
- se sale con
q
simplemente
- se sale con
- para recuperar un archivo borrado de un repositorio git
- primero encuentro en que commit se borro
git log --diff-filter=D --summary > aborrar.txt
- en aborrar puedo buscar el archivo y la información del commit
- luego ese commit lo descargo en un zip …
- primero encuentro en que commit se borro
grafico de commits
- para sacar un gráfico rudimentario de
commits
git log --oneline --graph --all
| * e765511 automatico notas-programacion
| * 90fd75f Merge branch 'gh-pages' of https://bitbucket.org/javieriranzo3/notas-programacion into gh-pages
| |\
| * | 073b5f7 automatico notas-programacion
* | | 9d962d6 automatico notas-programacion
| |/
|/|
* | 4fe3c1c automatico notas-programacion
* | d902fb8 para probar el stat
|/
* a8515be automatico notas-programacion
- para todas las ramas con
--all
BORRA EL GESTOR DE CONTRASEÑAS
- es molesto cuando tienes varios usuarios
- lanzarlo como administrador del equipo
- origen
git config --system --unset credential.helper
.gitignore
- un post de Atlassian con los patrones
- para entender los patrones buen post en castellano
- para ver los archivos que son ignorados por git al estar en el archivo
.gitignore
git ls-files --other --ignored --exclude-standard
- salen los archivos que a pesar de haber sido modificados o añadidos no serán tratados por git
- para evitar que git use unos archivo o directorios
- información útil
- otro enlace de github
- un post en castellano
recuperar un archivo de un commit anterior
- primero para ver que
commits
hemos hecho git log --oneline
- una vez encontrado el commit usamos su valor
sha1
para la siguiente instrucción git checkout b6a56c7 hola.md
- donde
b6a56c7
es la etiqueta sha1 del commit yhola.md
es el fichero que queremos recuperar- en ese momento el archivo
hola.md
que teníamos en la copia de trabajo se habrá sustituido por el que teníamos en el commit seleccionado
- en ese momento el archivo
ejemplo
- he perdido en el directorio de trabajo de mi portátil un script del proyecto TEST-EPACF
- en el repositorio remoto en bitbucket aún lo tengo
- el último commit es aa43d09
C:\proyectos\TEST-EPACF>git log --oneline
aa43d09 (HEAD -> master, origin/master) automatico TEST-EPACF26/03/2019
c32cc automático TEST-EPACF23/03/2019
a7e98b0 automático TEST-EPACF23/03/2019
git checkout aa43d09 test-epacf/Scripts/LOGIN-EPACF-ADM/Script1552513941793.groovy
C:\proyectos\TEST-EPACF>git checkout aa43d09 test-epacf/Scripts/LOGIN-EPACF-ADM/Script1552513941793.groovy
error: pathspec 'test-epacf/Scripts/LOGIN-EPACF-ADM/Script1552513941793.groovy' did not match any file(s) known to
- al final hago un clone y recupero los archivos :-1
recuperar un archivo de un commit anterior proceso largo
- sacar con
git cat
el contenido de un fichero de un commit anterior- antes descubrir el sha1 de ese fichero
- listado de
commits
formateado
git log --pretty=format:"%h - %an, %ar : %s"
fa26c31 - pelos6, 24 hours ago : automatico notas-programacion
51e855b - pelos6, 2 days ago : automatico notas-programacion
2e9e1f5 - pelos6, 2 days ago : motivo: para probar la plantilla de mensaje soluciona: una prueba
b56fc49 - javier iranzo, 2 days ago : automatico notas-programacion
271bee1 - pelos6, 2 days ago : automatico notas-programacion
236f9d9 - javier iranzo, 3 days ago : automatico notas-programacion
0a9ee5f - pelos6, 3 days ago : automatico notas-programacion
-
elegimos el commit del que queremos recuperar un archivo seleccionando el valor hash
0a9ee5f
-
sacamos la información de ese commit
C:\nube\MEGA\programacion\HtmlCssEstatico\jekyll\notas-programacion>git cat-file -p 0a9ee5f
tree 18cd7487cea13fc35c50360d539d7e153d925802
parent 40c1d8e4a7db0379389799a6513957a732920695
author pelos6 <javieriranzo@hotmail.com> 1505362837 +0200
committer pelos6 <javieriranzo@hotmail.com> 1505362837 +0200
automatico notas-programacion
- ahora del
tree
que es el árbol de archivos afectados por ese commit
C:\nube\MEGA\programacion\HtmlCssEstatico\jekyll\notas-programacion>git cat-file -p 18cd7487ce
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 .code-workspace
100644 blob 716215a8a011601f4174d355ac35ba0ecec58793 .gitignore
100644 blob ce072115b8eeaf3686c2df5cc7da6d42cb5c2242 .markdownlint.json
040000 tree 5275505c9573a166daf13fbca7b7db10d6da4fa3 .vscode
100644 blob 42586b1b40881abdd0ac6166be6329a9dfdb7a89 Gemfile
100644 blob 9df0e71963ef5cbd82da90346e43b36d90e83498 LICENSE.txt
100644 blob f549328aaea75b1a969d2628ef1089de15e88502 README.md
100644 blob fb568f1ce9d61a0fa26e7c263bddbe6886d6f961 _config.yml
- y por fin del archivo que queremos
C:\nube\MEGA\programacion\HtmlCssEstatico\jekyll\notas-programacion>git cat-file -p fb568f1ce9
site-version: v286
# Welcome to Jekyll!
#
# This config file is meant for settings that affect your whole blog, values
# which you are expected to set up once and rarely edit after that. If you find
# yourself editing these this file very often, consider using Jekyll's data files
# feature for the data you need to update frequently.
interfaz gráfico
gitk
- forma parte de
Git Gui
- forma parte de
plantilla de commit
- para tener un formato unificado de commit se puede usar una plantilla
- escribir un fichero y enlazarlo en la configuración de git
- se puede configurar de forma global o solo para el repositorio (recomendado)
git config commit.template para-commit.md
- se abre el editor por defecto que es
vi
- para cambiar el editor por defecto
git config --global core.editor notepad
- se lanza
git commit
lo que abrenotepad
con la plantilla - al guardar el editor se finaliza el commit
- si se lanza
git commit -m "mensaje de commit"
no se usa la plantilla
inicio repositorio en gitHub
- primero se crea la el repositorio en GitHub
echo "# olddognewtricks" >> README.md
git init
git add add -A
git commit -m "first commit"
git remote add origin https://github.com/javieriranzo3/olddognewtricks.git
git push -u origin master
secuencia habitual de confirmación
git add -A
git commit -m "mensaje del commit"
git push origin master
git add -A
- en git 1.x almacena todos los archivos ya sean nuevos, modificados o borrados
- en git 2.x también
- git add .
- en git 1.x almacena todos los archivos ya sean nuevos o modificados no los borrados
- en git 2.x almacena también los borrados
- git push
- origin es el alias que hemos puesto al repositorio remoto con
fmote
- master suele ser la rama en el repositorio remoto pero puede ser gh-pages para esta documentación
- origin es el alias que hemos puesto al repositorio remoto con
secuencia habitual al inicio
git status
git remote -v
git branch -a -vv
git fetch origin
git branch -a -vv
git diff
- a completar con casos reales
deshacer unos cambios
- al hacer
git pull
me sale este mensaje
error: Your local changes to the following files would be overwritten by merge:
_posts/2017-05-02-bitacora.md
Please commit your changes or stash them before you mer.
Aborting
- para ver lo que pasa lanzo
git status
C:\DATOS\javier\notas-programacion>c:\portables\PortableGit\bin\git status
On branch gh-pages
Your branch is behind 'origin/gh-pages' by 1 commit, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: _posts/2017-05-02-bitacora.md
- esto se soluciona con
C:\DATOS\javier\notas-programacion>c:\portables\PortableGit\bin\git checkout _posts/2017-05-02-bitacora.md
C:\DATOS\javier\notas-programacion>c:\portables\portableGit\bin\git status
On branch gh-pages
Your branch is behind 'origin/gh-pages' by 2 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
nothing to commit, working tree clean
para ver el historial de cambios de un archivo
git log -p C:\Proyectos\eprem\src\java\es\aragon\eprem\struts\actions\DispatcherMenuAplicacionAction.java
# otro más gráfico y mejor
gitk C:\Proyectos\eprem\src\java\es\aragon\eprem\struts\actions\DispatcherMenuAplicacionAction.java
para ver las diferencias entre un archivo concreto
git diff remotes/origin/gh-pages:pages/tutoriales/PADDOC-EPACF.md gh-pages:pages/tutoriales/PADDOC-EPACF.md
- la información de la rama oculta es la que sale con el comando
git branch -a
diferencias con remote
- la clave para entender esto es la rama oculta que se actualiza con
git fetch
por eso si no se lanza este comando no es coherente la información que obtenemos- información en git pull
- del comando se sale con
q
repositorios remotos
- para ver la
url
git remote -v
git y sublime text 3
- parece que al instalar el package en sublime algo se modifica en la configuración con el paquete de
markdownpreview
no coge la plantilla. - tengo que quitar el
package
git y volver a abrir sublime ..!!!
warning: LF will be replaced by CRLF in Gemfile.lock
- en esta página
- proponen una solución
git config --local core.autocrlf false
- esto provocaba un despliegue erróneo en Aerobatic
Your Gemfile.lock is corrupt. The followg gem is missing from the DEPENDENCIES section: 'ffi'
Version failed with error: Process bundle failed with code 20 code=20
- así ya no sale el mensaje al hacer git
add -A
pero el despliegue sigue dando el mismo problema - pruebo a solucionarlo borrando
Gemfile.lock
en la copia local - primero paro Jekyll
- luego borro
Gemfile.lock
- fuerzo un cambio
- el despliegue se queda en
queue
- a esperar !!!
- Ahora meto en
.gitingnore
aGemfile.lock
para limpiar la caché
git rm -r --cached .
clonar una versión de un commit anterior
- han desaparecido varios archivos de un repositorio y no se porque
- para recuperarlos …
- creo un directorio
http://es.stackoverflow.com/questions/1458/regresar-un-repositorio-a-un-commit-especifico
mkdir recuperacion
cd recuperacion
git clone https://github.com/pelos6/notas-programacion.git
cd notas-programacion
git log
- esto te extrae los últimos
commits
con las fechas y el hash 395507f
este es el que buscogit checkout 395507f
- no confundir con el número más largo
git checkout 0cfadb06391b16fb620978c155193ba289507210
- no confundir con el número más largo
- luego copio todos los
*.md
y digo que no quiero que se sobrescriban los que ya están.
git creando un servidor en local
c:\servidorGit>git clone --bare https://github.com/pelos6/aplicacionBase.git my_project.g
c:\servidorGit\my_project.git>git remote
origin https://github.com/pelos6/aplicacionBase.git (fetch)
origin https://github.com/pelos6/aplicacionBase.git (push)
c:\servidorGit>tree
Listado de rutas de carpetas para el volumen Acer
El número de serie del volumen es 00000200 22C7:ADBD
C:.
└───my_project.git
├───hooks
├───info
├───objects
│ ├───info
│ └───pack
└───refs
├───heads
└───tags
C:\SERVIDORGIT\.GIT
├───hooks
├───info
├───objects
│ ├───4b
│ ├───info
│ └───pack
└───refs
├───heads
└───tags
c:\servidorGit>
C:\proyectosGit>git clone c:/servidorGit/my_project.git
Cloning into 'my_project'...
done.
Checking out files: 100% (836/836), done.
C:\proyectosGit\my_project>git remote -v
origin c:/servidorGit/my_project.git (fetch)
origin c:/servidorGit/my_project.git (push)
secuencia de actuación
- el comando que dicen en los tutoriales
git init --bare
c:\servidorGit>git init --bare primer-proyecto
- he tenido que renombrar el directorio de
primer-proyecto
aprimer-proyecto.git
c:\servidorGit>git init --bare primer-proyecto.git
c:\proyectosGit>git clone c:\servidorGit\primer-proyecto primer-proyecto
c:\proyectosGit\primer-proyecto>git remote -v
origin c:\servidorGit\primer-proyecto (fetch)
origin c:\servidorGit\primer-proyecto (push)
c:\proyectosGit\primer-proyecto>echo hola mundo > hola.md
c:\proyectosGit\primer-proyecto>git add -A
c:\proyectosGit\primer-proyecto>git commit -m "hola"
[master (root-commit) eae07ce] hola
1 file changed, 1 insertion(+)
create mode 100644 hola.md
c:\proyectosGit\primer-proyecto>git push origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 219 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To c:\servidorGit\primer-proyecto
* [new branch] master -> master
c:\proyectosGit>git clone c:\servidorGit\primer-proyecto.git primer-proyecto-clonado
Cloning into 'primer-proyecto-clonado'...
fatal: 'c:\servidorGit\primer-proyecto.git' does not appear to be a git repository
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
c:\proyectosGit>git clone c:\servidorGit\primer-proyecto.git primer-proyecto-clonado
Cloning into 'primer-proyecto-clonado'...
done.
c:\proyectosGit>cd primer-proyecto-clonado
c:\proyectosGit\primer-proyecto-clonado>dir
El volumen de la unidad C es Acer
El número de serie del volumen es: 22C7-ADBD
Directorio de c:\proyectosGit\primer-proyecto-clonado
22/07/2017 20:58 <DIR> .
22/07/2017 20:58 <DIR> ..
22/07/2017 20:58 13 hola.md
1 archivos 13 bytes
2 dirs 542.763.098.112 bytes libres
- parece que es necesario para clonar que el directorio tenga la extensión
.git
pero sin embargo el remote deprimer-proyecto
sale sin esa extensión
c:\proyectosGit\primer-proyecto>git remote -v
origin c:\servidorGit\primer-proyecto (fetch)
origin c:\servidorGit\primer-proyecto (push)
c:\proyectosGit\primer-proyecto>cd ..\primer-proyecto-clonado
c:\proyectosGit\primer-proyecto-clonado>git remote -v
origin c:\servidorGit\primer-proyecto.git (fetch)
origin c:\servidorGit\primer-proyecto.git (push)
- a pesar de esa incoherencia puedo hacer
pull
ypush
entre los dos repositorios clonados contra el mismo servidor
referencia de Hostinger
- git config
- Uno de los comandos más usados en git es git config, que puede ser usado para establecer una configuración específica de usuario, como sería el caso del email, un algoritmo preferido para diff, nombre de usuario y tipo de formato, etc… Por ejemplo, el siguiente comando se usa para establecer
- git init
- Este comando se usa para crear un nuevo repertorio GIT:
- git add
- Este comando puede ser usado para agregar archivos al index. Por ejemplo, el siguiente comando agrega un nombre de archivo temp.txt
- git clone
- Este comando se usa con el propósito de revisar repertorios.
- git commit
- El comando commit es usado para cambiar a la cabecera. Ten en cuenta que cualquier cambio comprometido no afectara al repertorio remoto.
- git status
- Este comando muestra la lista de los archivos que se han cambiado junto con los archivos que están por ser añadidos o comprometidos.
- git push
- Este es uno de los comandos más básicos. Un simple push envía los cambios que se han hecho en la rama principal de los repertorios remotos que están asociados con el directorio que está trabajando. Por ejemplo:
- git checkout
- El comando checkout se puede usar para crear ramas o cambiar entre ellas. Por ejemplo, el siguiente comando crea una nueva y se cambia a ella:
- git remote
- El comando git se usa para conectar a un repositorio remoto. El siguiente comando muestra los repositorios remotos que están configurados actualmente:
- git branch
- Este comando se usa para listar, crear o borrar ramas. Para listar todas las ramas se usa:
- git pull
- Para poder fusionar todos los cambios que se han hecho en el repositorio local trabajando, el comando que se usa es:
- git merge
- Este comando se usa para fusionar una rama con otra rama activa:
- git diff
- Este comando se usa para hacer una lista de conflictos. Para poder ver conflictos con el archivo base usa:
- git tag
- Etiquetar se usa para marcar commits específicos con asas simples.
- git log
- Ejecutar este comando muestra una lista de commits en una rama junto con todos los detalles.
- git
reset
- Para resetear el index y el directorio que está trabajando al último estado comprometido se usa este comando:
- git stash
- Este es uno de los comandos menos conocidos, pero ayuda a salvar cambios que no están por ser comprometidos inmediatamente, pero temporalmente:
- git show
- Se usa para mostrar información sobre cualquier objeto git.
- git fetch
- Este comando le permite al usuario buscar todos los objetos de un repositorio remoto que actualmente no reside en el directorio local que está trabajando. Por ejemplo:
- git ls-tree
- Para ver un objeto de árbol junto con el nombre y modo de cada uno de ellos, y el valor blob´s SHA-1, se usa:
- git cat-file
- Usando el valor SHA-1, se puede ver el tipo de objeto usando este comando. Por ejemplo:
- git grep
- Este comando le permite al usuario buscar en los árboles de contenido cualquier frase o palabra. Por ejemplo, para buscar por www.tupaginaweb.com en todos los archivos se usaría:
- git instaweb
- Con este comando un servidor web puede correr interconectado con el repositorio local. Un navegador web también está automáticamente dirigido a el:
- git gc
- Para optimizar el repositorio por medio de una recolección de basura, que limpiara archivos innecesarios y los optimizara, usa:git hc
- git archive
- Este comando le permite al usuario crear archivos zip o tar que contengan los constituyentes de un solo árbol de repositorio:git archive – -format=tar master
- git prune
- Con este comando los objetos que no tengan ningún puntero entrante serán eliminados:git prune
- git fsck
- Para poder hacer un chequeo de integridad del sistema de archivos git, usa este comando. Cualquier objeto corrompido será detectado:git fsck
- git rebase
- Este comando se usa para la re aplicación de los compromisos en otra rama. Por ejemplo:git rebase master
GitBucket dga
- las pages
http://1.43.10.43:8180/jiranzo/aplicacionBase/pages/
forzar un pull
- para forzar un pull a lo que tengo en remoto
git fetch origin master
git reset --hard origin/master
Curso de MiriadaX
- volver a ver las trasparencias pues son muy interesantes
ejercicio del módulo 2
- clonar el repositorio que he previamente copiado con
fork
dejquemada
c:\cursos\miriadax\git_github>git clone https://github.com/javier-iranzo/cal_2com
- hago la modificación en el
html
<h1>javier iranzo</h1>
- añado el cambio y hago un
commit
c:\cursos\miriadax\git_github\cal_2com>git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: calculator.html
no changes added to commit (use "git add" and/or "git commit -a")
c:\cursos\miriadax\git_github\cal_2com>git branch --all
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
c:\cursos\miriadax\git_github\cal_2com>git add -A
c:\cursos\miriadax\git_github\cal_2com>git commit -m "Calculadors:Autor"
c:\cursos\miriadax\git_github\cal_2com>git log --oneline --graph
* c8a0207 Calculadors:Autor
* b0e63ad x^2 button
* 1096247 Readme & License
c:\cursos\miriadax\git_github\cal_2com>
- copio la rama
inverse
del repositoriocal_branches
al repositorio de trabajo con el nombreinverse
git fetch https://github.com/jquemada/cal_branches.git inverse:inverse
- la situación
c:\cursos\miriadax\git_github\cal_2com>git fetch https://github.com/jquemada/cal_branches.git inverse:inverse
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 1
Unpacking objects: 100% (3/3), done.
From https://github.com/jquemada/cal_branches
* [new branch] inverse -> inverse
c:\cursos\miriadax\git_github\cal_2com>git branch -a -vv
inverse e868dc4 1/x button
* master c8a0207 [origin/master: ahead 1] Calculadors:Autor
remotes/origin/HEAD -> origin/master
remotes/origin/master b0e63ad x^2 button
-
si hago un
git checkout inverse
la calculadora que sale no tiene mi nombre y la función calcula el inverso del número -
git merge inverse
-
resuelvo los conflictos y cambio una llave para que funcionen las dos funciones.
-
hago un commit de esos cambios
-
cambio a la rama
inverse
congit checkout inverse
-
ahora la calculadora es la original sin mi nombre
-
git merge master
-
ahora la calculadora es la misma que tenia en master
C:\cursos\miriadax\git_github\cal_2com>git log --oneline --graph
* cad7801 integrar inverse
|\
| * e868dc4 1/x button
* | c8a0207 Calculadors:Autor
* | b0e63ad x^2 button
|/
* 1096247 Readme & License
PROBLEMAS
REMOTE: HTTP BASIC: ACCESS DENIED
- al cambiar de contraseña en jiranzo@aragon.es por recomendación de AST los repositorios que usaba contra cirepo y que no necesitaban contraseña dan este error al hacer un pull por ejemplo
- origen de la solución
- Windows + R
- control /name Microsoft.CredentialManager
- credenciales de Windows
- buscar git:https://herramientas.aragon.es
- editar y cambiar la contraseña vieja a la nueva
- buscar git:https://herramientas.aragon.es
- credenciales de Windows
- control /name Microsoft.CredentialManager
alert handshake failure
- al intentar clonar los repositorios de cirepo a local
C:\proyectos>git clone https://herramientas.aragon.es/cirepo/EduCulDep/GEB.DEV.git
Cloning into 'GEB.DEV'...
fatal: unable to access 'https://herramientas.aragon.es/cirepo/EduCulDep/GEB.DEV.git/': error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure
Git clone fails with SSL routines:SSL23_GET_SERVER_HELLO
- al clonar desde el equipo sony
- actualizo la versión de git a la 2.10.1 y deja de dar este error
Filename too long
- me ocurre con PADDOC-EPCNT
C:\Proyectos\epcnt>git add -A
error: open("src/java/es/aragon/epcnt/struts/actions/convocatorias/gestionConvocatoria/presolicitudes/gestionPresolicitud/peticiones/gestionPeticionesDerechoPreferenteCentro/ConvInitGestionConvocatoriaPresolicitudPeticionesDerechoPreferenteCentroAction.java"): Filename too long
error: unable to index file src/java/es/aragon/epcnt/struts/actions/convocatorias/gestionConvocatoria/presolicitudes/gestionPresolicitud/peticiones/gestionPeticionesDerechoPreferenteCentro/ConvInitGestionConvocatoriaPresolicitudPeticionesDerechoPreferenteCentroAction.java
fatal: adding files failed
-
también pasa al hacer un pull del mismo proyecto
-
esta solución da problemas de permisos
git config --system core.longpaths true
-
esta funciona
git config core.longpaths true
-
es necesario lanzar esa instrucción en los repositorios donde se use el proyecto que tiene nombre largos
fallo en la red
- se cae la red al hacer un commit y sale este error
c:\Proyectos\epacf_adm>git push origin master
0 [main] bash 6812 C:\Program Files\Git\usr\bin\bash.exe: *** fatal error - add_item ("\??\C:\Program Files\Git", "/", ...) failed, errno 1
Stack trace:
Frame Function Args
000FFFF9B90 0018005CE9E (0018023D522, 0018021AC39, 00600010000, 000FFFF8B10)
000FFFF9B90 00180046559 (000FFFFABC0, 000FFFF9B90, 1D3F41DDD5AD9D7, 00000000000)
000FFFF9B90 00180046592 (000FFFF9B90, 00000000001, 00600010000, 505C3A435C3F3F5C)
000FFFF9B90 001800CADBB (00000000000, 00140000024, 00000000000, 1D3F41DE64BAB57)
000FFFFCBE0 00180118755 (00000000000, 00000000000, 00000000000, 00000000000)
000FFFFCCB0 00180046B65 (00000000000, 00000000000, 00000000000, 00000000000)
00000000000 001800457C3 (00000000000, 00000000000, 00000000000, 00000000000)
000FFFFFFF0 00180045874 (00000000000, 00000000000, 00000000000, 00000000000)
End of stack trace
RPC failed
C:\nube\MEGA\programacion\HtmlCssEstatico\jekyll\notas-programacion>git pull
error: fatal: RPC failed; curl 56 SSL read: error:00000000:lib(0):func(0):reason(0), errno 10054
The remote end hung up unexpectedly
fatal: protocol error: bad pack header
C:\nube\MEGA\programacion\HtmlCssEstatico\jekyll\notas-programacion>git pull
remote: Counting objects: 7, done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 7 (delta 5), reused 0 (delta 0)
Unpacking objects: 100% (7/7), done.
From https://bitbucket.org/javieriranzo3/notas-programacion
90fa702..651523f gh-pages -> origin/gh-pages
error: Your local changes to the following files would be overwritten by merge:
_config.yml
Please commit your changes or stash them before you merge.
Aborting
- otro igual 2018-05-22 17:49:38
C:\proyectos\proyectoskatalon>call git push origin master
Password for 'https://javieriranzo3@bitbucket.org':
Counting objects: 277, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (272/272), done.
Writing objects: 100% (277/277), 8.06 MiB | 5.66 MiB/s, done.
Total 277 (delta 106), reused 0 (delta 0)
error: RPC failed; curl 56 SSL read: error:00000000:lib(0):func(0):reason(0), errno 10054
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
Everything up-to-date
- tiene muchas capturas de pantalla de katalon
- las quito y a la siguiente vez funciona
PROBLEMAS CON VARIAS CUENTAS
-
el icono del usuario era distinto a pesar de tener el mismo nombre
-
no llegaban los email de confirmación de ticket en integración continua
-
los problemas con el despliegue continuo tienen que ver con el usuario con el que estoy mandando las versiones que no es jiranzo@aragon.es sino pelos6
- por eso el icono de los commits era diferente
- en el ordenador del trabajo Windows
Panel de control\Todos los elementos de Panel de control\Administrador de credenciales
- credenciales de Windows
- quito todas las credenciales que van con git.
-
lanzo
git config --edit --global
# This is Git's per-user configuration file.
[user]
# name = javier iranzo
# email = pelos6@users.noreply.github.com
# Please adapt and uncomment the following lines:
name = JAVIER IRANZO BURRIEL
# email = jiranzo@DC.ARAGON.ES
email = jiranzo@aragon.es
[core]
editor = notepad
[filter "lfs"]
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
required = true
clean = git-lfs clean -- %f
[credential]
# helper = manager
-
y cambio para que sea el usuario jiranzo
-
git config --edit --system
como administrador
[diff "astextplain"]
textconv = astextplain
[filter "lfs"]
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
required = true
[http]
sslBackend = openssl
sslCAInfo = C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
[core]
autocrlf = true
fscache = true
symlinks = false
[pull]
rebase = false
[credential]
helper = manager
[init]
defaultBranch = master
- y quito
helper = manager
- también del archivo que sale con
edit --global
- ahora me pide el usuario y la clave en el repositorio EPACF_ADM y en el que esta en el directorio ast para integración continua
- veo que cambia el icono y al mandar a AST llega el correo y el despliegue es correcto con la versión 1.0.21
PROBLEMAS CON VARIAS CUENTAS PERO TODAS CON SSH MENOS LA DE AST
- modifico las cuentas que no son de AST para usar SSH lo que hace que no me pida contraseña ni usuario
- lanzo
git config --edit --global
como administrador
# This is Git's per-user configuration file.
[user]
# name = javier iranzo
# email = pelos6@users.noreply.github.com
# Please adapt and uncomment the following lines:
name = JAVIER IRANZO BURRIEL
# email = jiranzo@DC.ARAGON.ES
email = jiranzo@aragon.es
[core]
editor = notepad
[filter "lfs"]
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
required = true
clean = git-lfs clean -- %f
[credential]
# helper = cache
helper = manager
- lanzo
git config --edit --system
y añadohelper = manager
[diff "astextplain"]
textconv = astextplain
[filter "lfs"]
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
required = true
[http]
sslBackend = openssl
sslCAInfo = C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
[core]
autocrlf = true
fscache = true
symlinks = false
[pull]
rebase = false
[credential]
helper = manager
[init]
defaultBranch = master
- ademas en el gestor de contraseñas de Windows tiene que estar la entrada para cirepo
dirección de red git:https://herramientas.aragon.es
usuario jiranzo@aragon.es
contraseña xxxxxxxx
- comprobado que funciona como antes con la contraseña y el usuario
PROBLEMA PARA RESOLVER EL HOST
- me da este error
proyectos\jekyll\notas-programacion>git push -u origin gh-pages
fatal: unable to access 'https://javieriranzo3:pelos678@bitbucket.org/javieriranzo3/notas-programacion.git/':
Couldn't resolve host 'bitbucket.org'
- al segundo intento hace el commit
problemas con git pull
no tracking information for the current branch
- salía este mensaje
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.
git pull <remote> <branch>
- se soluciona haciendo
git pull origin master
en vez de sologit pull
- luego
git push -u origin master
funciona como siempre
problema con git pull
such ref was fetched
- sale este mensaje 2017-12-14 07:44:09
C:\DATOS\javier\notas-programacion>git pull
remote: Counting objects: 8, done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 8 (delta 6), reused 0 (delta 0)
Unpacking objects: 100% (8/8), done.
From https://bitbucket.org/javieriranzo3/notas-programacion
dba9d58..cd61997 gh-pages -> origin/gh-pages
Your configuration specifies to merge with the ref 'refs/heads/gh-pages'
from the remote, but no such ref was fetched.
C:\DATOS\javier\notas-programacion>git pull
Updating dba9d58..cd61997
Fast-forward
_posts/2017-12-12-bitacora.md | 2 +-
_posts/2017-12-13-bitacora.md | 14 ------+-------
2 files changed, 8 insertions(+), 8 deletions(-)
- al segundo vuelvo a lanzar el comando y funciona
fatal: refusing to merge unrelated histories
- al hacer un
git pull
- lo soluciono con esta modificación
git pull --allow-unrelated-histories
- origen de la información
remote con contraseña
- para evitar los problemas que da tener varias cuentas en la misma máquina se puede poner la contraseña en el remote
git remote rm origin
git remote add origin https://pelos6@github.com/pelos6/test.git
git config remote.origin.url https://pelos6:pelos678@github.com/pelos6/test.git
- con bitbucket
git remote rm origin
git remote add origin https://javieriranzo3@bitbucket.org/javieriranzo3/feeling-responsive.git
git config remote.origin.url https://javieriranzo3:pelos678@bitbucket.org/javieriranzo3/feeling-responsive.git
- esto soluciona el problema que decía
c:\nube\MEGA\programacion\HtmlCssEstatico\jekyll\plantillajekyll>git push -u origin gh-pages
remote: Permission to javieriranzo3/plantillajekyll.git denied to pelos6.
fatal: unable to access 'https://javieriranzo3@github.com/javieriranzo3/plantillajekyll.git/':
The requested URL returned error: 403
- otro problema relacionado
From https://bitbucket.org/javieriranzo3/notas-programacion
* [new branch] gh-pages -> origin/gh-pages
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=origin/<branch> gh-pages
c:\proyectos\notas-programacion> git branch --set-upstream-to=origin/gh-pages
Branch gh-pages set up to track remote branch gh-pages from origin.
- nuevo problema
C:\nube\MEGA\programacion\HtmlCssEstatico\jekyll\notas-personal>git push -u origin gh-pages
remote: Unauthorized
fatal: Authentication failed for 'https://javieriranzo3@bitbucket.org/javieriranzo3/notas-personal.git/'
-
cambio el repositorio a público y funciona el push pero el despliegue en aerobatic se queda en QUEUED ????
-
para forzar que te pide la contraseña
- git config –global core.askpass
problema con el buffer
- creo un repositorio nuevo en bitbucket en concreto el de las fotos del camino de santiago con 770 imagenes
- al hacer el push me da un error
C:\nube\MEGA\programacion\HtmlCssEstatico\jekyll\galeria_santiago>git push -u origin master
Counting objects: 767, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (767/767), done.
error: Wfatal: RPC failed; curl 56 SSL read: error:00000000:lib(0):func(0):reason(0), errno 10054
The remote end hung up unexpectedly1 MiB | 82.00 KiB/s
Writing objects: 100% (767/767), 1.34 GiB | 8.31 MiB/s, done.
Total 767 (delta 1), reused 0 (delta 0)
fatal: The remote end hung up unexpectedly
Everything up-to-date
- para solucionarlo
git config --global http.postBuffer 157286400
sacado de altassian
cannot lock ref
- al lanzar
git pull
, desde el equipo de la dga y desde el de casa también, sale este mensaje de error
C:\DATOS\javier\notas-programacion>git pull
error: cannot lock ref 'refs/remotes/origin/gh-pages': Unable to create 'C:/DATOS/javier/notas-programacion/.git/refs/remotes/origin/gh-pages.lock': File exists.
Another git process seems to be running in this repository, e.g.
an editor opened by 'git commit'. Please make sure all processes
are terminated then try again. If it still fails, a git process
may have crashed in this repository earlier:
remove the file manually to continue.
From https://bitbucket.org/javieriranzo3/notas-programacion
! 468afe7..06bd296 gh-pages -> origin/gh-pages (unable to update local ref)
-
en casa tenía lanzada la
lanza_pull_build_deploy.bat
pero no tengo claro que eso sea lo que provoca este problema dado que habla delocal.ref
-
segundo despues vuelvo a lanzar el comando y funciona correctamente
-
el archivo que referencia no esta
-
la siguiente vez buscar el archivo y ver que contiene
-
2017-10-03 07:45:59
-
existe un archivo llamado
gh-pages
con este contenido15ef251fe2034012e835020c1dbdb218e097d57e
-
lo lanzo al minuto y funciona
-
no tiene que ver con
lanza_pull_build_deploy.bat
-
ayer habia conflictos al hacer un
git pull
desde casa.
Couldn’t resolve host
- coincide con una caída de internet por lo que creo que esa es la causa
- se restaura y deja de dar el error
unable to resolve reference ‘refs/heads/master’: reference broken
- en javier-personal
fatal: cannot lock ref 'HEAD': unable to resolve reference 'refs/heads/master': reference broken
-
pasa en los tres repositorios personales de hugo
-
pone todos los archivos como si fueran nuevos
-
con EPCNT_ADM funciona bien
-
y de esos sigo este
When I run into this I just git clone the project into a new file directory and pull the heads folder from located at .git\refs\heads and replace the original heads file in the directory that your having the problem. Then just delete the new clone you created (since it obviously doesn't have the updates your trying to push).
-
edito el archivo C:\Proyectos\hugo\javier-personal.git\refs\heads y veo que esta vacio
- lo edito con NOTEPAD con otros editores no se ve vacio y genera incertidumbre
-
clono el repositorio de nuevo en c:\cajaDeArena\javier-personal para ver como esta ese archivo en el repositorio recien clonado
-
ese archivo contiene 72c697daef383cfbf4f69bf22c32e3efdc2b6270
-
lo pego en el archivo del repositorio que no funciona
-
ahora ya funciona bien tanto el commit como cuando hacer git status que muestra la información esperada
-
hago lo mismo con javier-bitacora y javier-programacion
- e474bccd1686f7e0f283606f80e3457cb1b73545 para javier-bitacora
- 09baf965525869e729eaa1abf1afb62c597a593a para javier-programacion
-
2021-03-31 08:05:30
-
problemas con javier-programacion parecido pero en otro archivo
error: cannot lock ref 'refs/remotes/origin/master': unable to resolve reference 'refs/remotes/origin/master': reference broken
- el archivo al que se refiere esta vacio
- clono el repositorio para ver las diferencias y veo que el archivo que da problemas no existe en la copia recien clonada
- borro ese archivo vacio en la copia de trabajo y funciona el comando
git pull
- hago una modificación y un commit con push y veo que funciona todo