Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions pt_PT/swears/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
layout: layouts/page.njk
locale: pt_PT
contentType: swears
title: Oh Shit, Git!?!
---
1 change: 1 addition & 0 deletions pt_PT/swears/partials/banner.njk
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<aside class="notice">Olá! Podes ler este conteúdo sem palavões em <a href="{{site.url_noswears}}/{{locale}}">dangitgit.com</a></aside>
5 changes: 5 additions & 0 deletions pt_PT/swears/partials/footer.njk
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<footer>
<small class="contact">Qual é o teu o teu momento de Foda-se, git? Partilha comigo!</small>
<small class="twitter">{% twitter_link "ohshitgit" %} {% twitter_link "ksylor" %}</small>
<small class="copyright">{{site.copyright | safe}}</small>
</footer>
3 changes: 3 additions & 0 deletions pt_PT/swears/partials/intro.njk
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<p>Git é difícil, fazer asneira é fácil, e saber como resolver os problemas é complicado p'ra caralho. A documentação de Git tem este problema de pescadinha de rabo na boca onde não sabes procurar como resolver um problema <em>se não sabes o nome da coisa que precisas usar</em> para o resolver.</p>

<p>Por isso, aqui estão em algumas alhadas em que eu me meti e como eventualmente me safei, escrito em <em>português suave</em>.</p>
1 change: 1 addition & 0 deletions pt_PT/swears/partials/outro.njk
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<p>*Aviso: esta página não é suposto ser uma referência exaustiva. E sim, há outras formas de chegar ao mesmo resultado de uma forma com mais pureza técnica ou raio que te parta, mas cheguei a estes métodos por tentativa e erro com muita asneirada e mesas ao ar, e deu-me na telha partilhar com uma dose homeopática de leveza e profanidade. Faz como quiseres!</p>
4 changes: 4 additions & 0 deletions pt_PT/swears/partials/thanks.njk
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<p>Mil obrigados a toda a gente que se voluntariou para traduzir a página, vocês são espeteculares!
{% include "partials/collaborator-list.njk" %}. Com ajuda adicional de {% include "partials/otherhelper-list.njk" %}</p>

<p>Se queres ajudar a traduzir, submete um PR em {% github_link %}.<p>
18 changes: 18 additions & 0 deletions pt_PT/swears/tips/01-magic-time-machine.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
tags: tip
title: Foda-se, fiz uma asneira enorme, por favor diz-me que o git tem uma máquina do tempo!?!
id: magic-time-machine
order: 1
---

```git
git reflog
# vais ver uma lista de tudo o que fizeste no git
# em todos os branches!
# cada um tem um index HEAD@{index}
# procura o mais recente, antes da asneira
git reset HEAD@{index}
# maquina do tempo
```

Podes usar isto para recuperar coisas que foram apagadas acidentalmente, ou apagar experiências que estragaram o repo, ou desfazer um mau merge, ou simplesmente voltar a um ponto em que as coisas estavam a funcionar. Eu uso `reflog` MUITAS vezes. Um beijinho especial à muita muita muita muita muita gente que sugeriu adicionar.
18 changes: 18 additions & 0 deletions pt_PT/swears/tips/02-change-last-commit.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
tags: tip
title: Foda-se, fiz commit e percebi imediatamente que preciso de fazer uma pequena alteração!
id: change-last-commit
order: 2
---

```git
# faz a alteracao que pretendes
git add . # or add individual files
git commit --amend --no-edit
# agora, o ultimo commit tem as alteracoes!
# AVISO: nunca facas amend de commits publicos
```

Isto costuma acontecer-me quando faço commit e depois executo testes e linters... e fdx, falta um espaço depois do igual. Também podes fazer um novo commit com as alterações, e depois executar `rebase -i` para fazer squash (ou seja, fundir) dos dois, mas isto é mais rápido.

*Aviso: Nunca faças amend de commits que foram pushed para um branch público ou partilhado! Faz amend apenas a commits que existem só na tua cópia local, ou as coisas vão correr mal.*
13 changes: 13 additions & 0 deletions pt_PT/swears/tips/03-change-last-commit-message.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
tags: tip
title: Foda-se, preciso de mudar a mensagem do último commit!
id: change-last-commit-message
order: 3
---

```git
git commit --amend
# segue as instrucoes para mudar a mensagem de commit
```

A estupidez de requerimentos de formatação da mensagem de commit.
17 changes: 17 additions & 0 deletions pt_PT/swears/tips/04-accidental-commit-master.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
tags: tip
title: Foda-se, enganei-me e fiz commit para main de código que devia estar num branch novo!
id: accidental-commit-master
order: 4
---

```git
# cria um novo branch a partir do estado atual de main
git branch um-branch-novo
# elimina o ultimo commit de main
git reset HEAD~ --hard
git checkout um-branch-novo
# o teu commit esta neste branch agora :)
```

Nota: não funciona se já fizeste push para um branch público ou partilhado, e se já tentáste outras coisas, talvez tenhas que fazer `git reset HEAD@{varios-commits-atras}` em vez de `HEAD~`. Mágoa infinita. Para além disso, imensas pessoas sugeriram uma ótima e mais simples maneira de fazer isto que eu não conhecia. Obrigado a todos!
29 changes: 29 additions & 0 deletions pt_PT/swears/tips/05-accidental-commit-wrong-branch.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---
tags: tip
title: Foda-se, fiz commit para o branch errado!
id: accidental-commit-wrong-branch
order: 5
---

```git
# desfazer o ultimo commit, mantendo as alterações disponíveis
git reset HEAD~ --soft
git stash
# mudar para o branch correto
git checkout name-of-the-correct-branch
git stash pop
git add . # ou adicionar ficheiros individualmente
git commit -m "A tua mensagem aqui";
# agora as alteracoes estão no branch correto
```

Muita gente sugeriu usar `cherry-pick` nesta situação, usa o que fizer mais sentido para ti.

```git
git checkout nome-do-branch-correto
# puxar o commit mais recente para main
git cherry-pick master
# apagar de main
git checkout master
git reset HEAD~ --hard
```
14 changes: 14 additions & 0 deletions pt_PT/swears/tips/06-dude-wheres-my-diff.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
tags: tip
title: Foda-se, fiz um diff, mas está vazio?!
id: dude-wheres-my-diff
order: 6
---

Se tens a certeza que alteraste ficheiros, mas o `diff` aparece vazio, provavelmente fizeste `add` dos ficheiros à área de staging e terás que usar uma flag.

```git
git diff --staged
```

Arquivar sob ¯\_(ツ)_/¯ (sim, eu sei que não defeito, é feitio, mas é estupidamente confuso e não é óbvio a primeira vez que te acontece!)
21 changes: 21 additions & 0 deletions pt_PT/swears/tips/07-undo-a-commit.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
tags: tip
title: Foda-se preciso de desfazer um commit de há 5 commits atrás!
id: undo-a-commit
order: 7
---

```git
# procura o commit que precisas de desfazer
git log
# usa as setas no teclado para navegar o historico
# quando encontrares, guarda o hash do commit
git revert [hash guardado]
# o git vai criar um novo commit que desfaz o tal
# segue as mensagens para alterar a mensagem do commit
# ou basta guardar e commitar
```

Afinal não é preciso procurar o conteúdo de um fichero num commit antigo para copiar e colar quando precisas de reverter alterações! Se submeteste um bug ou uma gralha qualquer, podes desfazer o commit com `revert`.

Também podes reverter apenas um ficheiro específico em vez do commit inteiro! Mas claro que, com o caralho do git, é um conjunto de comandos completamente diferentes...
18 changes: 18 additions & 0 deletions pt_PT/swears/tips/08-undo-a-file.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
tags: tip
title: Foda-se preciso de desfazer as alterações num ficheiro!
id: undo-a-file
order: 8
---

```git
# procura o hash de um commit antes do ficheiro ser alterado
git log
# usa as setas no teclado para navegar o historico
# quando encontrares, guarda o hash do commit
git checkout [hash guardado] -- caminho/para/o/ficheiro
# a versao original do ficheiro vai estar no index
git commit -m "Uau, nao tens que copiar colar para corrigir"
```

O momento em que finalmente percebi esta merda foi UM ESPETÁCULO. ESPETÁÁÁÁCULO. Como diz o Fernando Mendes. Mas foda-se, que ideia de merda fazer com que `checkout --` seja a melhor maneira de desfazer alterações num ficheiro. :sai-da-frente-linus-torvalds:
28 changes: 28 additions & 0 deletions pt_PT/swears/tips/20-fuck-this-noise.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
---
tags: tip
title: Caralho para esta merda, desisto.
id: fuck-this-noise
note: this should always be the last one in the list, so setting order to 20 so I don't have to re-name/re-order it
order: 20
---

```git
cd ..
sudo rm -r pasta-do-crlh-do-git
git clone https://some.github.url/pasta-do-crlh-do-git.git
cd pasta-do-crlh-do-git
```

Obrigado ao Eric V. por esta. Dirijam a ele todas as queixas sobre o uso de `sudo` nesta piada.

Mas honestamente, se o teu branch está tão rebentado que precisas de voltar ao estado do repositório remoto, mas de uma forma "corretamente git", experimenta isto. Mas os efeitos destas ações são destrutivos e irrevertíveis!

```git
# sacar o estado mais recente do repositorio remoto
git fetch origin
git checkout master
git reset --hard origin/master
# apagar ficheiros e pastas que nao sao tracked
git clean -d --force
# repetir checkout/reset/clean para cada branch rebentado
```
1 change: 1 addition & 0 deletions pt_PT/swears/tips/tips.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{ "permalink": false }