206 lines
10 KiB
HTML

<!-- 32 -->
<!-- <div class="img zoomable">
<img src="/static/source_imgs/git/pst_2/git.webp" alt="" style="height: 300px; width: auto;">
</div> -->
<p>
Para poder subir cambios o descargar <a class="link" data-bs-toggle="modal"
data-bs-target="#repositorio">repositorios</a> de nuestro servidor de control de versiones con <a class="link"
data-bs-toggle="modal" data-bs-target="#git">Git</a> (No host GitHub)
debemos primero haber creador el repositorio en nuestro servidor, para ello checa primero esa nota.
</p>
<p>
Una vez creado el repositorio en nuestro servidor en nuestra maquina local podrémos hacer las siguientes
procedimientos:
</p>
<ul class="nav nav-tabs" id="tab-dix" role="tablist">
<li class="nav-item">
<a class="nav-link active" id="tab1-tab" data-toggle="tab" href="#tab1" role="tab" aria-controls="tab1"
aria-selected="true"><i class="bi bi-git"></i> Vincular </a>
</li>
<li class="nav-item">
<a class="nav-link" id="tab2-tab" data-toggle="tab" href="#tab2" role="tab" aria-controls="tab2"
aria-selected="false"><i class="fa-solid fa-link-slash"></i> Desvincular</a>
</li>
<li class="nav-item">
<a class="nav-link" id="tab3-tab" data-toggle="tab" href="#tab3" role="tab" aria-controls="tab3"
aria-selected="false"><i class="bi bi-copy"></i> Clonar</a>
</li>
</ul>
<div class="tab-content" id="myTabContent">
<div class="tab-pane fade active show" id="tab1" role="tabpanel" aria-labelledby="tab1-tab">
<!-- {# i nav 1 #} -->
<div>
<p>
Imaginemos que vamos a crear un nuevo proyecto llamado <i>new_project</i>, por lo tanto creamos la carpeta:
</p>
<pre><i class="bi bi-copy"> Copiar código</i>
<code contenteditable="true" class="code_lightMode">mkdir new_project; cd new_project</code></pre>
<p>
Una vez dentro de la carpeta de nuestro nuevo proyecto debemos inicializar un repositorio Git:
</p>
<pre><i class="bi bi-copy"> Copiar código</i>
<code class="code_lightMode"># iniciar un entorno de git
git init .
</code></pre>
<p>
Para vincular la carpeta del proyecto a nuestro servidor debemos ejecutar los siguientes comandos:
</p>
<pre><i class="bi bi-copy"> Copiar código</i>
<code contenteditable="true" class="code_lightMode"># vincular el proyecto a repositorio.
git remote add origin nombre_usuario@ip_servidor_o_dns:/ruta/carpeta/repositorio/en/servidor
# ejemplo: git remote add origin dave@192.162.1.18:/home/gitserver/repos/new_project
</code></pre>
<p>
El comando <b><i>git remote add origin</i></b> vincula nuestro proyecto local a un repositorio remoto. El alias
<b><i>origin</i></b> se usa para
referirse a este repositorio en comandos futuros como <i>git push</i> o <i>git pull</i>.
</p>
<p>
El comando anterior debe funcionar tanto en redes locales como externas. Para conexiones externas, asegúrate de
abrir y
redirigir el <a class="link" data-bs-toggle="modal" data-bs-target="#puerto">puerto</a> <a class="link"
data-bs-toggle="modal" data-bs-target="#ssh">SSH</a> (22) en tu router hacia la <a class="link"
data-bs-toggle="modal" data-bs-target="#ip">IP</a> del servidor. Si tienes una IP dinámica, considera usar
servicios
como <a href="https://www.duckdns.org/" target="_blank">DuckDNS</a>.
</p>
<p>
Cabe mencionar que no es recomendable aperturar el puerto 22 de tu tu router ISP, pero en caso de que así lo
desees esos son
los pasos a seguir, lo más recomendable es usar una <a class="link" data-bs-toggle="modal"
data-bs-target="#vpn">VPN</a> como wireguard y ya sea que tu hagas la instalación o
compres un router que
sea compatible con algunas VPN.
</p>
<p>
En caso de que hayas cambiado el puerto por defecto de escucha que es el 22 debes cambiar el comando de
vinculación a tu proyecto y especificar el puerto, el comando
puede ser aplicado tanto para redes locales y externas.
</p>
<pre><i class="bi bi-copy"> Copiar código</i>
<code contenteditable="true" class="code_lightMode"># comando para puerto de escucha modificado
git remote add origin ssh://nombre_usuario@ip_publica_o_dns:puerto/ruta/carpeta/repositorio/en/servidor
# ejemplo: ssh://dave@ip-casa-dns-sample.duckddns.org:2200/home/gitserver/repos/new_project
</code></pre>
<p>
Una vez hecho todos los pasos anterior ya puedes continuar con tu proyecto sin importar en el lenguaje de
programación en que vayas a
trabajar, guardar cambios con <b><i>git add .</i></b>, guardar cambios <i><b>git commit -m "mensaje relacionado
a los cambios hechos"</b></i>
y subirlos a tu servidor <i><b>git push -u origin master</b></i>.
</p>
<p>
Adicional a lo anterior, tambien es importante que conozcas que puedes vincular un proyecto a más de un servidor
en caso de que quieras
redundancias para backups, para hacerlo el proceso es similar al anterior, ejemplo del comando:
</p>
<pre><i class="bi bi-copy"> Copiar código</i>
<code contenteditable="true" class="code_lightMode">git remote add server_1 dave1@192.168.16.10:/home/servergit1/new_project
git remote add server_2 dave2@192.168.16.11:/home/servergit2/new_project
</code></pre>
<p>
Para hacer el envio de cambios es importante que hagas push por cada servidor, en este caso serían dos push,
ejemplo:
</p>
<pre><i class="bi bi-copy"> Copiar código</i>
<code contenteditable="true" class="code_lightMode"># Para enviar a servidor_1
git push server_1 master
# Para enviar a servidor_2
git push server_2 master
</code></pre>
</div>
<!-- {# f nav 1 #} -->
</div>
<div class="tab-pane fade" id="tab2" role="tabpanel" aria-labelledby="tab2-tab">
<!-- {# i nav 2 #} -->
<div>
<p>
Si deseas desvincular el repositorio remoto configurado en tu máquina local, el procedimiento es muy sencillo.
Primero, verifica las conexiones actuales de tu repositorio mediante el siguiente comando:
</p>
<pre><i class="bi bi-copy"> Copiar código</i>
<code class="code_lightMode"># Listar los remotos configurados en el repositorio local
git remote -v
</code>
</pre>
<p>
Este comando muestra las URL de los remotos configurados para operaciones de <i>fetch</i> (descarga) y
<i>push</i> (envío).
La salida será similar a la siguiente:
</p>
<pre><code>$ git remote -v
origin dave@dns_server_git:/home/gitserver/repo/new_project (fetch)
origin dave@dns_server_git:/home/gitserver/repo/new_project (push)
</code></pre>
<p>
Alternativamente, puedes usar el comando <code>git remote show origin</code> para obtener información más
detallada
sobre la configuración del remoto llamado <code>origin</code>, incluyendo su URL y el estado actual de las
conexiones.
</p>
<p>
Una vez que hayas identificado el remoto que deseas eliminar, puedes desvincularlo usando el siguiente comando:
</p>
<pre><i class="bi bi-copy"> Copiar código</i>
<code class="code_lightMode"># Eliminar un remoto llamado 'origin'
git remote remove origin
</code></pre>
<p>
Después de ejecutar este comando, el repositorio local ya no estará vinculado al remoto eliminado.
No podrás realizar operaciones como <code>git push</code> o <code>git pull</code> hasta que configures una nueva
vinculación.
Sin embargo, los cambios realizados en tu repositorio local permanecerán intactos.
</p>
<p>
Si tienes múltiples remotos configurados, como se menciona en la sección "Vincular", asegúrate de especificar
correctamente el nombre del remoto que deseas eliminar. Por ejemplo:
</p>
<pre><i class="bi bi-copy"> Copiar código</i>
<code class="code_lightMode"># Eliminar un remoto llamado 'server_1'
git remote remove server_1
</code></pre>
</div>
<!-- {# f nav 2 #} -->
</div>
<div class="tab-pane fade" id="tab3" role="tabpanel" aria-labelledby="tab3-tab">
<!-- {# i nav 3 #} -->
<div>
<p>
Clonar un repositorio es el proceso de crear una copia local de un repositorio remoto. Este procedimiento es
sencillo,
ya sea que trabajes en una red local o externa, siempre y cuando hayas realizado las configuraciones necesarias,
como
la apertura de puertos o la configuración de claves SSH.
</p>
<p>
Para clonar un repositorio utilizando el puerto SSH predeterminado (22), usa el siguiente comando:
</p>
<pre><i class="bi bi-copy"> Copiar código</i>
<code class="code_lightMode"># Clonar repositorio con puerto predeterminado (22)
git clone usuario@direccion_ip_servidor_o_dns:/ruta/carpeta/repositorio/en/servidor
# Ejemplo: git clone dave@192.168.11.31:/home/gitserver/repos/new_project
</code></pre>
<p>
Si tu servidor está configurado para usar un puerto SSH diferente, debes especificarlo en el comando.
A continuación, te mostramos el formato y un ejemplo:
</p>
<pre><i class="bi bi-copy"> Copiar código</i>
<code class="code_lightMode"># Clonar repositorio con puerto modificado
git clone ssh://usuario@direccion_ip_servidor_o_dns:puerto/ruta/carpeta/repositorio/en/servidor
# Ejemplo: git clone ssh://dave@192.168.11.31:2200/home/gitserver/repos/new_project
</code></pre>
<p>
<b>En caso de que no tengas una llave SSH te solicitará autenticación, solo ingresa la contraseña y podrás
clonar el repositorio,
puedes consultar mi nota de como crear una llave SSH.</b>
</p>
</div>
<!-- {# f nav 3 #} -->
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>