En GitHub.com:
Configuración SSH (Demostración):
# Generar clave SSH
ssh-keygen -t ed25519 -C "tu.email@example.com"
# Copiar clave pública
cat ~/.ssh/id_ed25519.pub
# Agregar en GitHub: Settings > SSH and GPG keys
# Configurar identidad
git config --global user.name "Actor Uno"
git config --global user.email "actor1@example.com"
# Verificar configuración
git config --list --global
En GitHub (Interfaz Web):
demo-colaboracion-git
Copiar comandos que GitHub sugiere:
# GitHub mostrará algo como:
git remote add origin git@github.com:usuario/demo-colaboracion-git.git
git branch -M main
git push -u origin main
# Crear directorio del proyecto
mkdir demo-colaboracion-git
cd demo-colaboracion-git
# Inicializar repositorio
git init
# Crear contenido inicial
echo "# Demo de Colaboración con Git" > README.md
# Crear archivo de código (ejemplo)
cat > index.html << 'EOF'
<!DOCTYPE html>
<html>
<head>
<title>Demo Git</title>
</head>
<body>
<h1>Proyecto de Demostración</h1>
<p>Creado por Actor 1</p>
</body>
</html>
EOF
# Ver estado
git status
# Agregar archivos
git add .
# Primer commit
git commit -m "Initial commit: README and basic HTML"
# Configurar rama principal
git branch -M main
# Conectar con GitHub
git remote add origin git@github.com:usuario/demo-colaboracion-git.git
# Subir al repositorio remoto
git push -u origin main
¡Verificar en GitHub que aparezca el contenido!
# Actor 2 clona el repositorio
git clone git@github.com:usuario/demo-colaboracion-git.git
cd demo-colaboracion-git
# Configurar su identidad local
git config user.name "Actor Dos"
git config user.email "actor2@example.com"
# Ver contenido actual
ls -la
cat README.md
# Modificar README
echo "" >> README.md
echo "## Colaboradores" >> README.md
echo "- Actor 1: Creador del proyecto" >> README.md
echo "- Actor 2: Primer colaborador" >> README.md
# Modificar HTML
sed -i 's/<p>Creado por Actor 1<\/p>/<p>Creado por Actor 1<\/p>\n <p>Colaboración de Actor 2<\/p>/' index.html
# Ver cambios
git status
git diff
# Confirmar cambios
git add .
git commit -m "Add collaborators section and update HTML"
# Subir cambios
git push origin main
# Actor 1 actualiza su repositorio local
git pull origin main
# Ver los cambios
cat README.md
cat index.html
¡Verificar que ambos actores ven los cambios!
# Crear y cambiar a nueva rama
git checkout -b feature/nueva-seccion
# Agregar nueva funcionalidad
cat >> index.html << 'EOF'
<div class="nueva-seccion">
<h2>Nueva Sección</h2>
<p>Esta sección fue agregada por Actor 1</p>
</div>
EOF
# Modificar README también
echo "" >> README.md
echo "## Nuevas Características" >> README.md
echo "- Sección agregada por Actor 1" >> README.md
# Commit en la rama feature
git add .
git commit -m "Add new section with feature content"
# Subir la rama a GitHub
git push origin feature/nueva-seccion
Mientras Actor 1 trabajaba en su branch, Actor 2 hace cambios en main:
# Asegurarse de estar en main
git checkout main
# Hacer cambios similares pero diferentes
cat >> index.html << 'EOF'
<footer>
<p>Copyright 2024 - Modificado por Actor 2</p>
</footer>
EOF
# Modificar el mismo README
echo "" >> README.md
echo "## Actualizaciones" >> README.md
echo "- Cambios realizados por Actor 2 en main" >> README.md
git add .
git commit -m "Add footer and updates section"
git push origin main
# Volver a main
git checkout main
# Actualizar main
git pull origin main
# Intentar merge de la rama feature (o rebase)
git merge feature/nueva-seccion
¡CONFLICTO! Git mostrará mensaje de error
# Ver estado del conflicto
git status
# Ver archivos en conflicto
cat README.md
Git habrá marcado el conflicto así:
<<<<<<< HEAD
## Actualizaciones
- Cambios realizados por Actor 2 en main
=======
## Nuevas Características
- Sección agregada por Actor 1
>>>>>>> feature/nueva-seccion
# Editar manualmente el archivo
# Remover marcadores de conflicto
# Combinar ambos cambios
# El resultado debería ser:
cat > temp_readme << 'EOF'
# Demo de Colaboración con Git
## Colaboradores
- Actor 1: Creador del proyecto
- Actor 2: Primer colaborador
## Nuevas Características
- Sección agregada por Actor 1
## Actualizaciones
- Cambios realizados por Actor 2 en main
EOF
mv temp_readme README.md
# Agregar archivos resueltos
git add .
# Completar el merge
git commit -m "Merge feature/nueva-seccion with conflict resolution"
# Subir cambios
git push origin main
¡Verificar en GitHub que todo se ve bien!
# Actualizar local
git pull origin main
# Crear nueva rama
git checkout -b feature/estilos-css
# Crear archivo CSS
cat > styles.css << 'EOF'
body {
font-family: Arial, sans-serif;
margin: 40px;
background-color: #f5f5f5;
}
h1 {
color: #2c3e50;
}
.nueva-seccion {
background: white;
padding: 20px;
border-radius: 5px;
margin: 20px 0;
}
EOF
# Modificar HTML para incluir CSS
sed -i 's/<title>Demo Git<\/title>/<title>Demo Git<\/title>\n <link rel="stylesheet" href="styles.css">/' index.html
# Commit y push
git add .
git commit -m "Add CSS styles for better presentation"
git push origin feature/estilos-css
En GitHub:
En GitHub:
En GitHub:
# Ambos actores actualizan local
git checkout main
git pull origin main
# Limpiar branches locales
git branch -d feature/estilos-css
git branch -d feature/nueva-seccion
Demostrar en GitHub:
fixes #1)Crear archivo .github/workflows/demo.yml:
name: Demo Workflow
on: [push]
jobs:
demo:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Say hello
run: echo "Hello from GitHub Actions!"