diff --git a/pt_PT/swears/index.html b/pt_PT/swears/index.html new file mode 100644 index 0000000..f2f24a8 --- /dev/null +++ b/pt_PT/swears/index.html @@ -0,0 +1,6 @@ +--- +layout: layouts/page.njk +locale: pt_PT +contentType: swears +title: Oh Shit, Git!?! +--- \ No newline at end of file diff --git a/pt_PT/swears/partials/banner.njk b/pt_PT/swears/partials/banner.njk new file mode 100644 index 0000000..91737db --- /dev/null +++ b/pt_PT/swears/partials/banner.njk @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/pt_PT/swears/partials/footer.njk b/pt_PT/swears/partials/footer.njk new file mode 100644 index 0000000..de26f17 --- /dev/null +++ b/pt_PT/swears/partials/footer.njk @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/pt_PT/swears/partials/intro.njk b/pt_PT/swears/partials/intro.njk new file mode 100644 index 0000000..fadd6e2 --- /dev/null +++ b/pt_PT/swears/partials/intro.njk @@ -0,0 +1,3 @@ +

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 se não sabes o nome da coisa que precisas usar para o resolver.

+ +

Por isso, aqui estão em algumas alhadas em que eu me meti e como eventualmente me safei, escrito em português suave.

\ No newline at end of file diff --git a/pt_PT/swears/partials/outro.njk b/pt_PT/swears/partials/outro.njk new file mode 100644 index 0000000..184c00c --- /dev/null +++ b/pt_PT/swears/partials/outro.njk @@ -0,0 +1 @@ +

*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!

\ No newline at end of file diff --git a/pt_PT/swears/partials/thanks.njk b/pt_PT/swears/partials/thanks.njk new file mode 100644 index 0000000..c3610bd --- /dev/null +++ b/pt_PT/swears/partials/thanks.njk @@ -0,0 +1,4 @@ +

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" %}

+ +

Se queres ajudar a traduzir, submete um PR em {% github_link %}.

\ No newline at end of file diff --git a/pt_PT/swears/tips/01-magic-time-machine.md b/pt_PT/swears/tips/01-magic-time-machine.md new file mode 100644 index 0000000..c592af7 --- /dev/null +++ b/pt_PT/swears/tips/01-magic-time-machine.md @@ -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. diff --git a/pt_PT/swears/tips/02-change-last-commit.md b/pt_PT/swears/tips/02-change-last-commit.md new file mode 100644 index 0000000..9368721 --- /dev/null +++ b/pt_PT/swears/tips/02-change-last-commit.md @@ -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.* diff --git a/pt_PT/swears/tips/03-change-last-commit-message.md b/pt_PT/swears/tips/03-change-last-commit-message.md new file mode 100644 index 0000000..7d4f624 --- /dev/null +++ b/pt_PT/swears/tips/03-change-last-commit-message.md @@ -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. diff --git a/pt_PT/swears/tips/04-accidental-commit-master.md b/pt_PT/swears/tips/04-accidental-commit-master.md new file mode 100644 index 0000000..cd64f4b --- /dev/null +++ b/pt_PT/swears/tips/04-accidental-commit-master.md @@ -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! diff --git a/pt_PT/swears/tips/05-accidental-commit-wrong-branch.md b/pt_PT/swears/tips/05-accidental-commit-wrong-branch.md new file mode 100644 index 0000000..41d3366 --- /dev/null +++ b/pt_PT/swears/tips/05-accidental-commit-wrong-branch.md @@ -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 +``` diff --git a/pt_PT/swears/tips/06-dude-wheres-my-diff.md b/pt_PT/swears/tips/06-dude-wheres-my-diff.md new file mode 100644 index 0000000..396bc0d --- /dev/null +++ b/pt_PT/swears/tips/06-dude-wheres-my-diff.md @@ -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!) diff --git a/pt_PT/swears/tips/07-undo-a-commit.md b/pt_PT/swears/tips/07-undo-a-commit.md new file mode 100644 index 0000000..77537e5 --- /dev/null +++ b/pt_PT/swears/tips/07-undo-a-commit.md @@ -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... \ No newline at end of file diff --git a/pt_PT/swears/tips/08-undo-a-file.md b/pt_PT/swears/tips/08-undo-a-file.md new file mode 100644 index 0000000..2b63c10 --- /dev/null +++ b/pt_PT/swears/tips/08-undo-a-file.md @@ -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: \ No newline at end of file diff --git a/pt_PT/swears/tips/20-fuck-this-noise.md b/pt_PT/swears/tips/20-fuck-this-noise.md new file mode 100644 index 0000000..74ec83f --- /dev/null +++ b/pt_PT/swears/tips/20-fuck-this-noise.md @@ -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 +``` \ No newline at end of file diff --git a/pt_PT/swears/tips/tips.json b/pt_PT/swears/tips/tips.json new file mode 100644 index 0000000..d0b2aa6 --- /dev/null +++ b/pt_PT/swears/tips/tips.json @@ -0,0 +1 @@ +{ "permalink": false }