aboutsummaryrefslogtreecommitdiff
path: root/docs/es/newbs_best_practices.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/es/newbs_best_practices.md')
-rw-r--r--docs/es/newbs_best_practices.md159
1 files changed, 159 insertions, 0 deletions
diff --git a/docs/es/newbs_best_practices.md b/docs/es/newbs_best_practices.md
new file mode 100644
index 000000000..fc2afb9ed
--- /dev/null
+++ b/docs/es/newbs_best_practices.md
@@ -0,0 +1,159 @@
1# Mejores prácticas
2
3## O, "Cómo aprendí a dejar de preocuparme y amarle a Git."
4
5Este documento procura instruir a los novatos en las mejores prácticas para tener una experiencia más fácil en contribuir a QMK. Te guiaremos por el proceso de contribuir a QMK, explicando algunas maneras de hacerlo más fácilmente, y luego romperemos algunas cosas para enseñarte cómo arreglarlas.
6
7En este documento suponemos un par de cosas:
8
91. Tienes una cuenta de Github, y has hecho un [fork del repo qmk_firmware](getting_started_github.md) en tu cuenta.
102. Has [configurado tu entorno de desarrollo](newbs_getting_started.md?id=environment-setup).
11
12
13## La rama master de tu fork: Actualizar a menudo, nunca commit
14
15Se recomienda que para desarrollo con QMK, lo que sea que estés haciendo, mantener tu rama `master` actualizada, pero **nunca** commit en ella. Mejor, haz todos tus cambios en una rama de desarrollo y manda pull requests de tus ramas mientras programas.
16
17Para evitar los conflictos de merge — cuando dos o más usuarios han editado la misma parte de un archivo al mismo tiempo — mantén tu rama `master` actualizada, y empieza desarrollo nuevo creando una nueva rama.
18
19### Actualizando tu rama master
20
21Para mantener tu rama `master` actualizada, se recomienda agregar el repository ("repo") de Firmware QMK como un repo remoto en git. Para hacer esto, abre tu interfaz de línea de mandatos y ingresa:
22```
23git remote add upstream https://github.com/qmk/qmk_firmware.git
24```
25
26Para verificar que el repo ha sido agregado, ejecuta `git remote -v`, y lo siguiente debe aparecer:
27
28```
29$ git remote -v
30origin https://github.com/<your_username>/qmk_firmware.git (fetch)
31origin https://github.com/<your_username>/qmk_firmware.git (push)
32upstream https://github.com/qmk/qmk_firmware.git (fetch)
33upstream https://github.com/qmk/qmk_firmware.git (push)
34```
35
36Ya que has hecho esto, puedes buscar actualizaciones del repo ejecutando `git fetch upstream`. Esto busca las ramas y etiquetas &mdash; juntos conocidos como "refs" &mdash; del repo QMK, que ahora tiene el apodo `upstream`. Ahora podemos comparar los archivos en nuestro fork `origin` con los de QMK.
37
38Para actualizar la rama master de tu fork, ejecuta lo siguiente, pulsando Intro después de cada línea:
39
40```
41git checkout master
42git fetch upstream
43git pull upstream master
44git push origin master
45```
46
47Esto te coloca en tu rama master, busca los refs del repo de QMK, descarga la rama `master` actual a tu computadora, y después lo sube a tu fork.
48
49### Hacer cambios
50
51Para hacer cambios, crea una nueva rama ejecutando:
52
53```
54git checkout -b dev_branch
55git push --set-upstream origin dev_branch
56```
57
58Esto crea una nueva rama llamada `dev_branch`, te coloca en ella, y después guarda la nueva rama a tu fork. El parámetro `--set-upstream` le dice a git que use tu fork y la rama `dev_branch` cada vez que uses `git push` o `git pull` en esta rama. Solo necesitas usarlo la primera que que subes cambios; ya después, puedes usar `git push` o `git pull`, sin usar los demás parámetros.
59
60!> Con `git push`, puedes usar `-u` en vez de `--set-upstream` &mdash; `-u` es un alias de `--set-upstream`.
61
62Puedes nombrar tu rama casi cualquier cosa, pero se recomienda ponerle algo con relación a los cambios que vas a hacer.
63
64Por defecto `git checkout -b` se basará tu nueva rama en la rama en la cual estás actualmente. Puedes basar tu rama en otra rama existente agregando el nombre de la rama al comando:
65
66```
67git checkout -b dev_branch master
68```
69
70Ahora que tienes una rama development, abre tu editor de texto y haz los cambios que quieres. Se recomienda hacer varios commits pequeños a tu rama; de este modo cualquier cambio que causa problemas puede ser rastreado y deshecho si fuera necesario. Para hacer tus cambios, edita y guarda los archivos que necesitas actualizar, agrégalos al *staging area* de Git, y luego haz un commit a tu rama:
71
72```
73git add path/to/updated_file
74git commit -m "My commit message."
75```
76`git add` agrega los archivos que han sido cambiados al *staging area* de Git, lo cual es la "zona de preparación"de Git. Este contiene los cambios que vas a *commit* usando `git commit`, que guarda los cambios en el repo. Usa un mensaje de commit descriptivo para que puedas saber que ha cambiado fácilmente.
77
78!> Si has cambiado muchos archivos, pero todos los archivos son parte del mismo cambio, puedes usar `git add .` para agregar todos los archivos cambiados que están en tu directiro actual, en vez de agregar cada archivo manualmente.
79
80### Publicar tus cambios
81
82El útimo paso es subir tus cambios a tu fork. Para hacerlo, ejecuta `git push`. Ahora Git publicará el estado actual de `dev_branch` a tu fork.
83
84
85## Resolver los conflictos del merge
86
87A veces cuando el trabajo en una rama tarda mucho tiempo en completarse, los cambios que han sido hechos por otros chocan con los cambios que has hecho en tu rama cuando abres un pull request. Esto se llama un *merge conflict*, y es algo que ocurre cuando varias personas editan las mismas partes de los mismos archivos.
88
89### Rebase tus cambios
90
91Un *rebase* es la manera de Git de tomar los cambios que se aplicaron en un punto, deshacerlos, y aplicar estos mismos cambios en otro punto. En el caso de un conflicto de merge, puedes hacer un rebase de tu rama para recoger los cambios que has hecho.
92
93Para empezar, ejecuta lo siguiente:
94
95```
96git fetch upstream
97git rev-list --left-right --count HEAD...upstream/master
98```
99
100El comando `git rev-list` ejecutado aquí muestra el número de commits que difieren entre la rama actual y la rama master de QMK. Ejecutamos `git fetch` primero para asegurarnos de que tenemos los refs que representan es estado actual del repo upstream. El output del comando `git rev-list` muestra dos números:
101
102```
103$ git rev-list --left-right --count HEAD...upstream/master
1047 35
105```
106
107El primer número representa el número de commits en la rama actual desde que fue creada, y el segundo número es el número de commits hecho a `upstream/master` desde que la rama actual fue creada, o sea los cambios que no están registrados en la rama actual.
108
109Ahora que sabemos el estado actual de la rama actual y el del repo upstream, podemos empezar una operación rebase:
110
111```
112git rebase upstream/master
113```
114Esto le dice a Git que deshaga los commits en la rama actual, y después los re-aplica en la rama master de QMK.
115
116```
117$ git rebase upstream/master
118First, rewinding head to replay your work on top of it...
119Applying: Commit #1
120Using index info to reconstruct a base tree...
121M conflicting_file_1.txt
122Falling back to patching base and 3-way merge...
123Auto-merging conflicting_file_1.txt
124CONFLICT (content): Merge conflict in conflicting_file_1.txt
125error: Failed to merge in the changes.
126hint: Use 'git am --show-current-patch' to see the failed patch
127Patch failed at 0001 Commit #1
128
129Resolve all conflicts manually, mark them as resolved with
130"git add/rm <conflicted_files>", then run "git rebase --continue".
131You can instead skip this commit: run "git rebase --skip".
132To abort and get back to the state before "git rebase", run "git rebase --abort".
133```
134
135Esto nos dice que tenemos un conflicto de merge, y nos dice el nombre del archivo con el conflict. Abre el archivo en tu editor de texto, y en alguna parte del archivo verás algo así:
136
137```
138<<<<<<< HEAD
139<p>For help with any issues, email us at support@webhost.us.</p>
140=======
141<p>Need help? Email support@webhost.us.</p>
142>>>>>>> Commit #1
143```
144La línea `<<<<<<< HEAD` marca el principio de un conflicto de merge, y la línea `>>>>>>> Commit #1` marca el final, con las secciones de conflicto separadas por `=======`. La parte del lado `HEAD` is de la versión de QMK master del archivo, y la parte marcada con el mensaje de commit es de la rama actual.
145
146Ya que Git rastrea *cambios de archivos* en vez del contenido de los archivos directamente, si Git no puede encontrar el texto que estaba en el archivo antes del último commit, no sabrá cómo editar el archivo. El editar el archivo de nuevo resolverá este conflicto. Haz tus cambios, y guarda el archivo.
147
148```
149<p>Need help? Email support@webhost.us.</p>
150```
151
152Ahora ejecuta:
153
154```
155git add conflicting_file_1.txt
156git rebase --continue
157```
158
159Git registra los cambios al archivo con conflictos, y sigue aplicando los commits de nuestra rama hasta llegar al final.