> Certo, então voce ta me dizendo que qualquer pessoa pode fazer essa alteração? é o que qualifica essa alteração como boa ou ruim, ja que existem tantas formas diferentes de fazer, essa alteração pode não agradar ao autor ou a uma comunidade que ta alterando? e se eu não gostar como eu faço para desfazer a alteração ou parte dela?
Depende. Normalmente vc configura as permissões ao repositório, então geralmente não é qualquer um que pode fazer tudo.
Quanto a alteração ser boa ou ruim, também depende (tanto de quem faz, quanto de quem avalia). Sempre tem como desfazer, o Git permite que vc [volte o arquivo como estava em algum momento passado](https://git-scm.com/docs/git-revert/), por exemplo.
> Estou entendendo que essas alterações tem que passar por um criterio de aprovação ou não?
Depende, existem várias formas de trabalhar. Vc pode ter pessoas que verificam o trabalho de outras, e podem aceitar ou rejeitar alterações, por exemplo.
> existem coisa que sempre tem que ser alteradas? se existem porque ja não se faz da forma final?
Sistemas mudam o tempo todo. Seja porque surgiu uma nova necessidade de negócio (lançar um produto novo, uma funcionalidade que não existia, o site precisa ser "modernizado", etc) ou adequação técnica (descobriram uma vulnerabilidade de segurança e precisa atualizar para uma nova versão, ou aplicar a correção), etc.
Ou tem algo que só dá erro em um caso específico que ninguém pegou nos testes, aí precisa arrumar. Ou mudou alguma lei e o sistema precisa se adequar. Ou o programador estava com sono e fez tudo errado... Enfim, sempre tem o que mudar, impossível sair tudo perfeito da primeira vez, e improvável que tudo permaneça imutável pra sempre.
> quando voce fala historico eu entendo que as versões antes da anteração vao ficar la tambem acessiveis, é isso ne?
Sim, todas as versões ficam no repositório e podem ser consultadas a qualquer momento.
> o github é como se fosse um grande forum onde todo mundo comenta de tudo sobre os codigos que entram ali? então no git eu não posso fazer isso de comentar ou so posso fazer isso no github?
Eu diria que o GitHub é um "facilitador". Vc pode usar o Git sem o GitHub. Por exemplo, eu posso criar um repositório na minha máquina e deixá-lo acessível pra vc, e aí vc acessa diretamente minha máquina pra copiá-lo e para enviar alterações.
O que o GitHub fez foi disponibilizar um site pra isso, então em vez de vc acessar minha máquina diretamente, eu deixo meu repositório no GitHub, e vc copia de lá. Se vc alterar algo, manda pra lá também, e eu posso aceitar ou rejeitar as alterações. Não é bem um fórum, mas vc pode abrir *issues* (que seriam similares aos "tópicos" de um fórum, embora não seja exatamente isso) para discutir alguma questão específica. A interface do site facilita esse tipo de interação (que poderia ser feita por outros meios, mas o GitHub meio que centraliza tudo isso em torno do repositório).
> Agora um pouco antes disso. Eu penso que o git vai servir para outras pessoas encontrarem junto comigo a solução para determinado parte do codigo que não funciona como eu queria, mas, existe algum codigo nesse meio que é tipo uma lenda, algo que foi colocado la e todos admiram ou que todos temem ou que ninguem altera porque funciona mas ninguem entende? existem 'tabus' desse nivel no git?
Isso existe desde sempre, mesmo antes do Git surgir.
> quando voce fala git e github o que se tem para aprender sobre eles? um livro resolve? ou é mais algo dinamico de ir fazendo e aprendendo? ou realmente precisa ser um especialista em git ou em github? um é mais importante que outro? temos que aprender isso antes de aprender a programar ou antes de aprender uma linguagem?
Eu gosto [desse livro](https://git-scm.com/book/en/v2) (tem em português, mas não sei se a tradução está boa), e depois que tiver passado do básico, tem [esse artigo](https://think-like-a-git.net/). Eu acho o Git mais importante que o GitHub, embora os dois sejam importantes hoje em dia. E não tem nada a ver com aprender a programar (Git é uma **ferramenta** que vc usa para controle de versão, não é uma linguagem, dá pra aprender ambos em paralelo porque são coisas diferentes).
> desculpa mas o que é o pull request?
Imagine que vc copia o repositório de outra pessoa (`git clone`), faz alterações e no final manda de volta pro repositório dela. Esse "manda de volta" é um pull request: é um pedido do tipo "*olha que legal o que eu fiz, vc pode dar uma olhada, e caso tenha gostado, adicionar isso de forma definitiva no seu repositório?*" - isso é, imagino eu, para evitar que qualquer pessoa fique mudando qualquer coisa no seu repositório. A pessoa pode mudar na cópia dela, mas pra mudar a sua, tem que pedir antes - daí o "request" (pedido).