Objetivo: manter o seu código local sincronizado com o GitHub.
O problema:
A solução: Push (você → GitHub) e Pull (GitHub → você)
mkdir demo-github-sync && cd demo-github-sync
git init
echo "print('v1')" > app.py
echo "# Demo GitHub Sync" > README.md
git add . && git commit -m "Initial commit"
# Ligar ao GitHub (substitua pelo seu repo)
git remote add origin https://github.com/ton-username/demo-repo.git
# Primeiro push
git push -u origin mainÉ tudo! O seu código está no GitHub.
Cenário típico:
# Modifica localmente
echo "print('v2 updated')" > app.py
git add . && git commit -m "Update to v2"
# Enviar para o GitHub
git push origin main# Obter as alterações da equipa
git pull origin main
# Ou em 2 etapas:
git fetch origin # Descarregar sem fundir
git merge origin/main # Fundir a seguir# Manhã: obter o trabalho da equipa
git pull
# Dia: desenvolve
echo "print('new feature')" >> app.py
git add . && git commit -m "Add feature"
# Noite: enviar o seu trabalho
git pushConflito = você e um colega modificam a mesma linha.
# O seu colega modificou app.py no GitHub
# Você também localmente
echo "print('my version')" > app.py
git add . && git commit -m "My changes"
git pull # CONFLITO!# O Git mostra o conflito em app.py:
# <<<<<<< HEAD
# print('my version')
# =======
# print('colleague version')
# >>>>>>> abc123
# Edite o ficheiro para ficar com o que quer:
echo "print('merged version')" > app.py
# Finalizar a resolução:
git add app.py
git commit -m "Resolve conflict"
git pushConflito resolvido! A equipa obtém a sua versão fundida.
| Comando | Ação |
|---|---|
git clone <url> | Copiar um repo GitHub |
git remote add origin <url> | Ligar ao GitHub |
git push -u origin main | Primeiro push (com tracking) |
git push | Enviar os seus commits |
git pull | Obter + fundir |
git fetch | Obter sem fundir |
git status | Ver o estado da sync |
git pull (obter)git add + git commitgit push (partilhar)GitHub sync = respiração do programador: pull → code → push!