-
Notifications
You must be signed in to change notification settings - Fork 0
/
Comandos Git - Platzi.txt
234 lines (169 loc) · 8.27 KB
/
Comandos Git - Platzi.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
// Todos los comandos los posibles con git
# git
// Verla versión de git
# git --version
// Configuración actual de git
# git config --list
//Configuraciones Básicas ---------<>
//Para trabajar en git necesitamos configurar nuestro e-mail y nombre
# git config --global user.email [email protected]
# git config --global user.name "Villamarín Jesús"
// NOTA:global para que afecte todos los repositorios de nuestra pc
// Configurar los colores dentro de git
# git config --global color.ui true
// Configurar VSCode como editor por defecto para git
# git config --global core.editor "code --wait"
# git config --global -e
//--------- Comandos útiles de la terminal------
# cd --> para movernos entre directorios
# mkdir --> crear directorios
# ls --> listar los archivos de un directorios
# rm --> Eliminar un archivo o directorio (-rf)
# touch --> Crear archivos
# clear --> "Limpiar pantalla"
// Crear repositorios
# git init ó git init proyecto (Creara un repositorio llamado proyecto)
// Ver el estado de nuestros archivos en el repositorio
# git status
--> Untracked files (archivos color rojo) son nuevos archivos que estan en el working directory
--> Changes to be committed (archivos color verde) archivos que han sido modificados y estan listos para hacerle un commit
// Colocar un archivo en el estado Staged
# git add <file>
--> git add index.html
--> git add . ( el "." sería todos los archivos de ese directorio)
// Sacar un archivo del estado staged
# git rm --cached <file>
--> git rm --cached index.html
--> git rm -r --cached .
// Eliminar un archivo tanto del staged como del working directory
# git rm -F <file>
--> git rm -F archivo.txt
// Hacer commits/ Pasarlo al repositorio
# git commit <file> -m "Se agrego al repositorio"
--> git commit . -m "Se agregan al repositorio todos los archivos"
--> git commit index.html -m "Se agrego al repositorio el archivo index.html"
// Concatenar un nuevo cambio con un cambio previo
# git add archivo
# git commit -m "Mismo cambio solo que agregamos el archivo faltante" --amend
// Deshacer modificaciones de un archivo
# git checkout -- file
--> git checkout -- index.html
// Ver el registro de commits registrados
# git log
# git log --oneline (en una sola linea)
# git log --oneline --graph (Grafico de como va avanzando el proyecto, es mas util cuando hayan ramas y mezclas)
# git log -2 (Ver commit enumerado, el 1 siempre va ser el ultimo commit hecho)
// Versionar / etiquetar un proyecto -- Git Tags
--> existen dos tipos
Lightweight -- ligeras (Versión que vamos a etiquetar)
annotated -- anotadass
# git tag 1.0 ----> ligeras
# git tag -a 1.0 -m "Versión estable del proyecto" ---> anotada
// Listar las versiones del proyecto
# git tag -l
// Eliminar una versión del proyecto en el repositorio local
# git tag -d <version>
--> git tag -d 1.0
// Eliminar una version del proyecto en el repositorio remoto
# git push --delete origin <version>
--> git push --delete origin 1.0
// Renombrar versión o etiqueta del proyecto
# git tag -f -a <version> -m "mensaje de la version" <sha>
--> git log --oneline -> copiamos el commit que deseamos etiquetar (3eab11e)
--> git tag -f -a 0.4 -m "Renombramos la versión 0.8 a la versión 0.5 y seguido copiamos el sha obtenido" 3eab11e
// Ver que cambios se han hecho con los commits en el proyecto
# git diff <sha-1> ó git diff <ultimo sha> <antepenultimo sha> ó git diff <tag v1> <tag v2>
--> git diff 2463cff
---> git diff 2463cff 3eab11e
---> git diff 0.5 1.0
// Deshacer un commit en el que haya un bug, etc... Al realizar esto, todo vuelve al estado staged
--- Existen 3 tipos de reset principales y que hacen cosas diferentes
# git reset --soft <sha -1> (Para deshacer las modifiicaciones hechas desde un commit hasta el ultimo)
---> git reset --soft 3eab11e
# git reset --mixed <sha-1> (Sacar los cambios realizados del commit y del staged, pasandolo al working directory)
---> git reset --mixed 3eab11e
# git reset --hard <sha-1> (Borrar absolutamente todo del proyecto que este ya sea en staged o commit)
--> git rest --hard (Borra todo lo que este en el staged)
---> git rest --hard 3eab11e (Borrar todo apartir de un commit en especifico hasta el commit mas reciente )
// Crear ramas de un repositorio
# git branch <nombre de la rama>
// Listar las ramas de nuestro proyecto
# git branch -l
//Eliminar una rama
# git branch -d <nombre rama>
// Eliminar una rama forzosamente
# git branch -D <nombre de la rama>
// Renombrar una rama
# git branch -m <rama a renombrar> <renombre>
// Para movernos/cambiarnos entre ramas
# git checkout <sha-1>
# git checkout <tag version>
# git checkout <nombre de la rama>
// Crear una rama y movernos directamente a ella
# git checkout -b nueva_rama
// Hacer merge entre ramas (Primero debo moverme a la rama que quiero mezclarle los cambios)
# git merge <rama que tiene cambios aprobados>
---> git checkout master
----> git merge alterna
// Reescribir historial del proyecto
# git rebase <rama a reescribir>
--> git rebase -i <rama> (Hacerlo de forma interactiva)
// Cuando no se esta seguro de realizar un commit (Guardarlo temporalmente fuera del repositorio)
// Guardarlo en el limbo (stash)
# git stash
// Ver lista de stash's que tengo guardada
# git stash list
// Continuar con alguna modificación que esta en stash
# git stash pop|apply stash@{nro stash}
---> git stash pop stashstash@{1}
// Eliminar un stash que ya no servira por x's razón
# git stash drop stash@{nro stash}
---> git stash drop stash@{1}
// Escoger un commit especifico para mezclarlo con otra rama de forma urgente
# git cherry-pick <sha-1>
// Clonar un repositorio de github
# git clone <URL repositorio>
--> git clone https://github.com/jesusvillamarin/platzi-course-git-github.git
// Crear llaves publicas SSH con git
# ssh-keygen -t rsa -b 4096 -C "Correo electronico"
---> ssh-keygen -t rsa -b 4096 -C "[email protected]"
// Agregar un repositorio de github a nuestro proyecto para poder hacer push
# git remote add <Nombre para el repo|normalmente es origin> <URL repositorio>
---> git remote add origin https://github.com/jesusvillamarin/platzi-course-git-github.git
---> git remote add miorigin https://github.com/jesusvillamarin/platzi-course-git-github.git
// Ver lista de conexiones existentes a repositorios
# git remote -v
// Eliminar conexión de un repositorio
# git remote remove <nombre del repo>
---> git remote remove origin
---> git remote remove miorigin
// Mezclar los archivos que estan en el repositorio remoto [GitHub]
// Es necesario traer primero los archivos del repositorio github a nuestro repositorio local
// para asi luego hacer un merge
# git fetch <nombre del repositorio agg> <rama que deseamos traer>
-->git fetch origin master
// Mezclar los repositorios
# git merge origin/master
// En caso de que haya un error por commits que tengamos en el local tendremos que colocar lo siguiente
# git merge origin/master --allow-unrelated-histories
// Hacer fetch y merge en un solo paso
# git pull <nombre del repositorio remoto> <rama que queremos>
--->git pull origin master
--->git pull miorigin master
// Haciendo push a nuestro repositorio remoto para asi almacenarlo fuera del equipo local
# git push origin master
--->git push miorigin master
// Hacer push y con nuestros tags (versiones del proyecto) al repositorio remoto
// Hacer push de nuestros tags (versiones del proyecto) al repositorio remoto
# git push origin master --tags
// Hacer push de las ramas creadas de nuestro proyecto
# git push origin <otra rama>
--> git push origin alterna
// Ignorar archivos que tengan claves de BD o login's
---> creamos el archivo .gitignore en nuestro proyecto
->> touch .gitignore
---> abrimos el archivo y agregamos el nombre del archivo que no queramos que se haga push
->> conexionDB.js
---> configuraciones de gitignore dependiendo del proyecto node|Django|python...
# https://www.gitignore.io
---> hacemos git add . luego git commit -m "Agregando el archivo .gitignore" y listo