Score %0 (0 correct0 incorrect20 unanswered)

P1. ¿Cómo puedes verificar la versión actual de git?

  • git --v
  • git --version
  • git --option
  • git --current

Referencia

P2. ¿Qué comando te permite crear una conexión entre un repositorio local y remoto?

  • git remote add new
  • git remote add origin
  • git remote new origin
  • git remote origin

Referencia

P3. Describe qué hacen estos comandos de Git con el historial de confirmaciones:

git reset --hard HEAD~5
git merge --squash HEAD@{1}
  • Reinician el HEAD al quinto commit en el repositorio y luego fusionan con la rama master.
  • El HEAD de la rama actual se reinicia cinco commits atrás, luego los commits anteriores se fusionan en un solo commit.
  • Eliminan los últimos cinco commits.
  • Fusionan los últimos cinco commits en una nueva rama.

Explicación:

  • git reset --hard HEAD~5 reinicia la rama actual al commit justo antes de los últimos 5 (ver man gitrevisions para detalles sobre esta notación y otras alternativas interesantes como HEAD@{2 days ago}). Como es un reset duro, también sobrescribirá cada cambio en el árbol de trabajo. Ver man git-reset.
  • git merge --squash HEAD@{1} HEAD@{1} es donde estaba la rama justo antes del comando anterior (nuevamente, ver man gitrevisions). Este comando establece el estado del índice como sería justo después de una fusión desde ese commit. Toda esta operación podría ser una forma de tomar 5 commits de una rama en la que comenzaste una nueva característica y aplastarlos en un solo commit, uno significativo.

Referencia

P4. Tu proyecto actual tiene varias ramas; master, beta y push-notifications. Acabas de terminar la característica de notificación en la rama push-notification, y deseas confirmarla en la rama beta. ¿Cómo puedes lograr esto?

  • Cambia a la rama push-notifications y ejecuta git merge beta
  • Cambia a la rama master y ejecuta git merge beta -> push-notifications
  • Elimina la rama push-notifications y se confirmará automáticamente en la rama master
  • Cambia a la rama beta y ejecuta git merge push-notifications

Referencia

P5. ¿Cuál de las siguientes afirmaciones es cierta cuando usas el siguiente comando?

git add -A

  • Todos los archivos nuevos y actualizados se preparan
  • Los archivos se preparan en orden alfabético.
  • Todos los archivos nuevos se preparan
  • Solo se preparan los archivos actualizados

Referencia Referencia

P6. ¿Qué mostrará el siguiente comando en la Terminal?

git remote -v

  • Una lista de repositorios remotos y sus URL
  • La versión de git que estás ejecutando actualmente
  • Un editor en línea para modificar repositorios remotos
  • Las últimas 5 versiones de git que has instalado

Referencia Referencia

P7. Mirando los siguientes comandos, describe lo que está sucediendo.

git checkout feature-user-location
git cherry-pick kj2342134sdf090093f0sdgasdf99sdfo992mmmf9921231
  • La confirmación está siendo etiquetada para su lanzamiento en la rama feature-user-location
  • Se está copiando una confirmación de su rama original a la rama feature-user-location
  • Se está escogiendo por selección como el nuevo HEAD del historial de confirmaciones
  • Se está copiando una confirmación de la rama feature-user-location a la rama master
  • Se cambia la rama a la rama feature-user-location, y se aplica la confirmación especificada a la rama.

Explicación:

'git checkout feature-user-location' cambia a la rama 'feature-user-location'. 'git cherry-pick kj2342134sdf090093f0sdgasdf99sdfo992mmmf9921231' aplica los cambios del commit especificado ('kj2342134sdf090093f0sdgasdf99sdfo992mmmf9921231') a la rama actual (feature-user-location). Esto efectivamente copia la confirmación de su rama original a la rama feature-user-location. Por lo tanto, esta secuencia de comandos está haciendo un cherry-pick de un commit específico en la rama feature-user-location.

P8. ¿Qué hace el siguiente comando en el repositorio de git?

git reset --soft HEAD^

  • Borra todas las confirmaciones anteriores y restablece el historial del repositorio a su estado inicial.
  • Restablece la rama de trabajo al primer commit.
  • Mantiene el HEAD en la confirmación actual pero elimina todas las confirmaciones anteriores.
  • Establece HEAD en el commit anterior y deja los cambios de la confirmación deshecha en el área de preparación.

Referencia Referencia

P9. Encuentras un error en tu proyecto, pero no puedes ubicar dónde se introdujo en el historial de confirmaciones. ¿Cómo diagnosticarías este problema?

  • Retrocede manualmente a través de tu historial de confirmaciones.
  • Usa git search -diff para comparar todas las confirmaciones en el historial de tu repositorio.
  • Ejecuta un git rebase para encontrar la confirmación con errores.
  • Usa git bisect para comparar la confirmación con errores con una confirmación temprana que funcione como se espera.

Referencia Referencia

P10. ¿Por qué se usaría el siguiente comando?

git rebase -i HEAD~10

  • Para ejecutar una búsqueda comparativa de los últimos 10 commits en busca de diferencias
  • Para listar los últimos 10 commits y modificarlos con el comando squash o fixup
  • Para eliminar los últimos 10 commits y restablecer HEAD
  • Para almacenar en caché localmente los últimos 10 commits

Referencia Referencia

P11. ¿Por qué usarías un gancho pre-receive en tu repositorio remoto?

  • No lo usarías, lo usarías en el repositorio local
  • Para ejecutar un script cuando un remoto recibe un push que se activa antes de que se actualicen las referencias
  • Para ejecutar un script después de que se realicen actualizaciones en el repositorio remoto
  • Para depurar todas las etiquetas de confirmación y versiones de lanzamiento

Referencia Referencia

P12. ¿Qué opción puedes usar para aplicar configuraciones de git en todo tu entorno de git?

  • --all
  • --master
  • --global
  • --update

Referencia Referencia

P13. ¿Cómo podrías unir varios commits sin usar git merge --squash?

  • Caché
  • No puedes. git merge --squash es el único comando git para esa operación.
  • Rebasing
  • Reflogging

Referencia Referencia

P14. Si clonaste un repositorio git existente, ¿qué sucedería?

  • Una nueva copia sobrescribiría el repositorio central
  • Se crearía una copia del repositorio en tu máquina local
  • Nada, clonar no es una función admitida por git
  • Se crearía una copia del repositorio en la plataforma de alojamiento

Referencia Referencia

P15. ¿Cómo puedes mostrar una lista de archivos agregados o modificados en una confirmación específica?

  • Encuentra la confirmación en el repositorio remoto, ya que es el único lugar donde se almacena ese tipo de información.
  • Usa el comando diff-tree con el hash de la confirmación.
  • Ejecuta git commit --info con el hash de la confirmación.
  • Accede a los datos de caché de la confirmación con git stash.

Referencia Referencia

P16. ¿Qué archivos deja fuera este .gitignore?

#.swift
build/

*.txt
*.metadata
  • Todos los archivos con una extensión de archivo .swift, .txt o de metadatos, así como el directorio build completo
  • Solo el directorio build
  • Todos los archivos en el directorio build, así como los archivos que terminan con .txt o .metadata
  • Solo archivos con extensiones .swift y .txt.

Referencia

Una línea que comienza con # sirve como comentario. Por lo tanto, # .swift no hace nada. Ver man gitignore.

P17. Después de realizar cambios en un repositorio local, ejecutas el siguiente comando. ¿Qué hará esto?

git commit -a -m "Refactor code base"

  • Nada, no puedes usar múltiples opciones en el mismo comando
  • Agrega todos los archivos nuevos al área de preparación
  • Confirma todos los archivos nuevos con un mensaje
  • Agrega todos los archivos modificados al área de preparación, luego los confirma con un mensaje

P18. Después de verificar tu estado de git, obtienes la siguiente salida, que muestra el archivo beta-notes.js en la confirmación pero también sin preparar. ¿Cómo puede ocurrir esta situación?

Change to be committed:

(use "git reset HEAD <file>..." to unstage)
modified: beta-notes.js
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: beta-notes.js
  • Había dos copias de beta-notes.js pero una fue eliminada
  • beta-notes.js estaba preparado, luego se modificó después, creando dos versiones diferentes del archivo
  • Se crearon dos copias de beta-notes.js, pero solo una está siendo rastreada
  • Hay dos copias rastreadas de beta-notes.js, pero una fue eliminada de la confirmación

Referencia

P19. ¿Dónde se almacenan los archivos antes de confirmarse en el repositorio local?

  • Archivos guardados
  • Documentos git
  • Área de preparación
  • Caché git

Referencia

P20. ¿Qué comandos usarías para forzar una sobrescritura de tus archivos locales con la rama master?

  git pull --all
  git reset --hard origin/master
  git pull -u origin master
  git reset --hard master
  git pull origin master
  git reset --hard origin/myCurrentBranch
  git fetch --all
  git reset --hard origin/master

Nota: - El comando pull es fetch seguido de merge o rebase (en este caso, merge). No queremos hacer una fusión. La fusión sería una acción en nuestro repositorio. Solo queremos sobrescribir nuestros archivos locales.