{"meta":{"title":"Uso de la API REST para interactuar con la base de datos de Git","intro":"Usa la API REST para leer y escribir objetos sin procesar de Git en tu base de datos de Git en GitHub, así como enumerar y actualizar tus referencias (encabezados de rama y etiquetas).","product":"REST API","breadcrumbs":[{"href":"/es/enterprise-cloud@latest/rest","title":"REST API"},{"href":"/es/enterprise-cloud@latest/rest/guides","title":"Guías"},{"href":"/es/enterprise-cloud@latest/rest/guides/using-the-rest-api-to-interact-with-your-git-database","title":"Introducción: base de datos de Git"}],"documentType":"article"},"body":"# Uso de la API REST para interactuar con la base de datos de Git\n\nUsa la API REST para leer y escribir objetos sin procesar de Git en tu base de datos de Git en GitHub, así como enumerar y actualizar tus referencias (encabezados de rama y etiquetas).\n\n## Información general\n\nBásicamente, esto te permite reimplementar muchas de las funcionalidades de Git con la API REST al crear objetos sin procesar directamente en la base de datos y actualizar las referencias de rama. Técnicamente, podrías hacer lo mismo que Git sin necesidad de instalarlo.\n\nLa API REST devolverá un elemento `409 Conflict` si el repositorio de Git está vacío o no está disponible. Un repositorio no disponible habitualmente significa que GitHub está en el proceso de crearlo. En el caso de un repositorio vacío, puedes usar el punto de conexión de la API de REST [`PUT /repos/{owner}/{repo}/contents/{path}`](/es/enterprise-cloud@latest/rest/repos/contents#create-or-update-file-contents) para crear contenido e inicializar el repositorio, de modo que puedas usar la API para administrar la base de datos de Git. Contacta a nosotros a través del portal  si este estado de respuesta persiste.\n\nPara obtener más información sobre la base de datos de objetos de Git, lea el capítulo [Información interna de Git](https://git-scm.com/book/en/v2/Git-Internals-Plumbing-and-Porcelain) del libro Pro Git.\n\nComo ejemplo, si quisiera confirmar un cambio en un archivo de su repositorio, haría lo siguiente:\n\n* Obtener el objeto de la confirmación actual\n* Recuperar el árbol al cual apunta\n* Recuperar el contenido del objeto del blob que tiene el árbol para esa ruta de archivo en particular\n* Cambiar el contenido de alguna manera y publicar un objeto de blob nuevo con este contenido nuevo, obteniendo el SHA del blob a cambio\n* Publicar un nuevo objeto de árbol con ese indicador de la ruta del archivo reemplazándolo con el SHA de tu blob nuevo y obteniendo a cambio el SHA del árbol\n* Crear un objeo de confirmación nuevo con el SHA de la confirmación actual como el padre y el SHA del árbol nuevo, obteniendo a cambio el SHA de la confirmación\n* Actualizar la referencia de tu rama para apuntar al nuevo identificador SHA del commit\n\nPuede que parezca complejo, pero en realidad es bastante sencillo cuando entiendes el modelo y se abre un montón de cosas que podrías potencialmente hacer con la API.\n\n## Verificar la capacidad de fusión de las solicitudes de extracción\n\n> \\[!WARNING]\n> No dependas del uso de Git directamente o de [`GET /repos/{owner}/{repo}/git/refs/{ref}`](/es/enterprise-cloud@latest/rest/git/refs#get-a-reference) para las actualizaciones en las referencias `merge` de Git, ya que este contenido queda obsoleto sin previo aviso.\n\nUna API consumidora debe solicitar explícitamente un pull request para crear un commit de merge de *prueba*. Se crea una confirmación de combinación de *prueba* cuando visualiza la solicitud de incorporación de cambios en la interfaz de usuario y se muestra el botón \"Merge\" (Combinar), o cuando [obtiene](/es/enterprise-cloud@latest/rest/pulls/pulls#get-a-pull-request), [crea](/es/enterprise-cloud@latest/rest/pulls/pulls#create-a-pull-request) o [edita](/es/enterprise-cloud@latest/rest/pulls#update-a-pull-request) una solicitud de incorporación de cambios a través de la API REST. Sin esta solicitud, las referencias `merge` de Git quedarán obsoletas hasta la próxima vez que alguien vea la solicitud de incorporación de cambios.\n\nSi actualmente usa métodos de sondeo que producen refs de Git `merge` obsoletos, GitHub recomienda seguir los pasos siguientes para obtener los cambios más recientes de la rama predeterminada:\n\n1. Recibir el webhook de la solicitud de extracción.\n2. Llame a [`GET /repos/{owner}/{repo}/pulls/{pull_number}`](/es/enterprise-cloud@latest/rest/pulls/pulls#get-a-pull-request) para iniciar un trabajo en segundo plano a fin de crear el candidato de confirmación de combinación.\n3. Sondee el repositorio mediante [`GET /repos/{owner}/{repo}/pulls/{pull_number}`](/es/enterprise-cloud@latest/rest/pulls/pulls#get-a-pull-request) para ver si el atributo `mergeable` es `true` o `false`. Puede usar Git directamente o [`GET /repos/{owner}/{repo}/git/refs/{ref}`](/es/enterprise-cloud@latest/rest/git/refs#get-a-reference) para las actualizaciones de las referencias `merge` de Git solo después de realizar los pasos anteriores."}