26 dicas para facilitar sua vida com Git e Github (parte 1)

Entrei na brincadeira do Twitter compilar dica sobre algum assunto em troca de like ou RT e resolvi falar sobre git e GitHub que é um assunto que sinto que muita gente tem dificuldade e se você trabalha com desenvolvimento de software, não importa a linguagem e especialidade, garanto que git é fundamental pro seu dia-a-dia.

Segue então um compilado de 26 dicas sobre Git e GitHub:

  1. Acabou de dar commit, não deu push ainda mas quer adicionar mais algum arquivo?
    1 – git add
    2 – git commit --amend
    O amend modifica o commit passado, então você pode inclusive usá-lo pra remover arquivos do commit, mudar a mensagem, trocar autor, o que quiser!
  2. Criei um monte de commit que não quero mais, mas não quero perder as mudanças que fiz:
    git reset --soft
    As suas mudanças vão estar staged, prontas pra serem commitadas novamente
  3. Quero apagar tudo (commits e mudanças) que fiz e deixar minha branch exatamente igual a um commit específico ou branch:
    git reset --hard
    Se quiser deixar igual a uma branch remota, pode ser git reset --hard origin/branch
  4. Não faço ideia de como deixei meu repo local nesse estado:
    git reflog
    Vai te dar um histórico do que você fez
  5. Mexi um monte num arquivo, mas quero commitar só uma parte das mudanças:
    git add -p
    Vai te mostrar pedaço por pedaço do que você mudou e te perguntar o que quer colocar em stage
  6. Ao começar um projeto novo, não se esqueça de já configurar o arquivo .gitignore pra evitar subir arquivos indesejados. Vai ser bem mais fácil se já fizer do começo do que ter que remover depois 🤙
    Aqui tem um monte de template que dá pra copiar:

    github/gitignore – A collection of useful .gitignore templates. Contribute to github/gitignore development by creating an account on GitHub.

  7. Quero ver o diff inteiro de código do que foi feito nos últimos commits
    git log -p
  8. Quero acompanhar o fork de um projeto:
    git remote add <https://url-do-fork.git>
    Pra ver todos os remotes do repo q vc tem localmente:
    git remote -v
    Pra usar, é só trocar origin pelo nome que você deu ao remote:
    git pull , git checkout nome-fork/branch…
  9. No GitHub, se você escrever na mensagem do commit “close”, “closes”, “closed”, “fixes” ou “fixed” seguido de hashtag + número da issue (por exemplo: “Fixes #1234”) , a issue é automaticamente fechada
  10. Para quem usa o VS Code, super recomendo o plugin Git Lens. Ele mostra visualmente todo o histórico de commits do arquivo, quem fez o quê e quando, bem útil:
    GitLens — Git supercharged – Visual Studio Marketplace
  11. Criou uma branch com o nome errado e só percebeu bem depois, na hora de dar push? no worries:
    git branch -m nome-velho nome-novo
  12. Sabia que no GitHub dá pra usar emoji nas mensagens de commit? Pra usar precisa seguir o modelo “:nome-do-emoji:”
    Pra ser sincera eu não sou muito fã, mas num projeto mais zuerinha, quem sabe 🙂
    Aqui tem uma colinha.
    Quem quiser ir além no assunto emoji no commit, dá uma olhada nesse artigo.
  13. Vc sabe a diferença entre git e GitHub? git é o software de controle de versão, GitHub é uma plataforma para hospedar projetos que usam git. Fora o GitHub existem outras soluções como BitBucket e GitLab, e por ser open source vc pode ter o seu próprio servidor de git
  14. Se você tem dificuldade com vim ou outro editor de linha de comando, é possível trocar o editor padrão que o git usa pra escrever as mensagens de commit ou resolver conflitos:
    git config --global core.editor "seu-editor"
  15. Eu entendo ter preguiça de adicionar arquivo por arquivo, mas ao invés de dar git add . e vez ou outra subir o que não deve, usa git add -u que ele vai adicionar só os arquivos que já foram trackeados pelo git. Ou melhor, nunca use git add .
  16. Escreva mensagens de commit concisas e específicas. Quanto mais detalhada for a descrição do commit (to de olho em você só usar git commit -m), melhor pro seu eu do futuro, principalmente se seu código não for muito comentado.
  17. Eu sou da turma dos micro commits: quanto mais commits melhor. A função funcionou? commita. O teste passou? commita. Isso ajuda muito no futuro caso tenha que desfazer algo, caçar bugs ou reaproveitar código. Mesmo q não esteja 100%, commita com “WIP” na frente q é a dica 18
  18. Se você não acabou o que tinha que fazer mas não quer correr o risco de perder o que já foi feito, vc pode commitar e na mensagem adicionar “WIP” antes, que significa Work in Progress. Quando tiver pronto vc poder dar commit –amend e tirar o WIP da mensagem 😉
  19. Mais sobre WIP: essa dica é só pra quando você estiver numa branch separada. Se tiver trabalhando com alguém na mesma branch, é bom avisar pra não mandar código quebrado pra coleguinha. E evite mandar WIP pra master, já que devemos sempre evitar modificar o passado dessa branch
  20. Se tiver q modificar um commit do passado que ñ seja o último, por exemplo pra tirar um commit WIP, a gente usa o git rebase -i, que é o rebase interativo. Esse já é um pouco mais difícil, eu fiz um post que explica uma das formas de usar: anarute.com/preciso-modifi…
  21. Use git stash pra guardar *temporariamente* os arquivos modificados q ainda ñ foram commitados. Útil qndo precisa trocar de branch, por ex., testar o código sem suas mudanças, ou testar em outra branch. Pra “pegar” as mudanças de volta git stash pop
  22. Quero pegar só um commitzinho de uma branch que ainda não tá em master e jogar na branch que você está:
    git cherry-pick
  23. Eu to dando várias dicas e uma galera já tá contribuindo falando outras formas de fazer algo que eu disse. Uma das coisas mais legais de git é que tem vários caminhos de chegar num mesmo resultado, você tem q ver o que é melhor/mais produtivo pro seu fluxo de trabalho
  24. Eu vejo muita gente que tá começando tendo que digitar nome e usuário TODA vez que clona, dá push ou pull. Isso é porque vc ainda não adicionou uma chave SSH do seu computador no GitHub! Arrumar isso é facinho: help.github.com/articles/addin…
  25. Todas as dicas dessa thread são pra usar git na linha de comando. Por isso é mega importante perder o medo do terminal! Ele não morde, aos pouquinhos a gente se familiariza a ponto de preferir fazer tudo por lá
  26. Sobre git e terminal: se vc ainda ñ modificou seus dotfiles ou não usa algum tema bonitinho q mostra qual branch vc tá, status do staging, etc. Recomendo q faça já! Aumenta a produtividade exponencialmente.
    Eu uso zsh + oh my zsh + qlqr tema que trate git
    Link para Oh my Zsh

Learn how to code Javascript by playing a game!

CodeCombat is a web based game that teaches you how to code with Javascript by playing it and so far, the more I get to know it the more I like it! 

The game has a 2D RPG skin with cute characters and runs directly in the browser. At the beginning it is a bit hard to get used to its UX and for those who are anxious, sorry to tell, but you will have to read the instructions. But when you start to get how it works it gets more fun and without noticing you are learning how to code and hacking the code they give you in order to pass the levels faster.

The better part of Codecombat I just found out yesterday: the team who built it has open-sourced everything! I have even talked with the team and they are super accessible, they have provided a few aways of doing that.

There are a bunch of ways to get involved with the game and helping spread code education out there. So, if you are looking for a free and open-source software to contribute, you should consider this one.

What I’ve learnt at #learnfest

Yesterday I’ve attended to Learnfest Conference & Festival @Campus Party, an event to gather great and important people that are working hard for a better education. It intends to be more than a conference: a movement that motivates people to use their energy in order to focus their effort to make create ideas and solutions for social problems involving education.

I am already working with education and technology for a couple of years now and one of the most frustrating parts about being an entrepreneur at this field is to deal all the time with the dilemma social vs. money. So I could say that events like this are always important to remind me of why I’m doing this and why I’m giving up of a lot of things to use my knowledge and potential for dealing with real & big problems that I believe that are important to be solved.

Although somethings can sound obvious, and actually they can be obvious, it is always good to punctuate them:

The problem we are trying to solve can be bigger than we think, so we need to consider the process and the time

When we are trying to do a massive thing, and I’m not saying that we shouldn’t think big, but we should consider the whole context and that somethings are out of our hands or else we will get really frustrated, mainly in the educational field that everything is very tied and outdated. It doesn’t matter how good was our planning and strategy, we need to consider that somethings just cannot be solved from one day to another, it takes a while and a lot of effort and timing.

Innovation for a big company is not the same for a start-up

As a start-up, we need the help from big companies in order to grow up and conquer market, but we have to know how to understand them and that our concepts of innovation are different. We have also to remember that they need us too. Their operation process prevent them from doing and testing things fast and cheap as well as creating new solutions.

Money != quality

Yes, we (Brazil and LATM) are investing a lot of money in education but we still have a countless number of problems in this area. As Brian Pick, the Chief of teaching and learning at Washington D.C., mentioned at the event, we need to focus on three major things: 1) train and gather the very best teachers; 2) acquire and create the very best content; and 3) engage the students and families. These are our major efforts in order to build Mupi, an online school of creative technology in Portuguese.

 

One thing that I’ve noticed in common among all of the speakers and participants was that we have a lot of challenges ahead but we are also getting strong and the ones that are successful are the ones that didn’t changed their goals despite of all the problems faced and really want to invest their efforts in something bigger. This inspired me to go on and keep up the good job. Who knows I’m not sharing my values and successful (and not so successful) cases in a near future to help other adventurers? 😉

Hello world! about this blog

it has been a while since I’ve been forcing myself to turn my ideas into words, and today I’ll finally start it.
in here, I intend to bring my constant learning on how to be a 23-year-old entrepreneur without losing my mind or my friends, as well as share my discoveries as a web designer and a newbie free and open source software enthusiast.