{"id":19109633,"url":"https://github.com/vagnerbellacosa/curso_github","last_synced_at":"2025-02-22T11:17:19.994Z","repository":{"id":137375748,"uuid":"372382022","full_name":"VagnerBellacosa/Curso_GitHub","owner":"VagnerBellacosa","description":"Compartilhando o material de apoio curso DIO GitHub Iniciante de Rafael Galieani","archived":false,"fork":false,"pushed_at":"2025-02-06T23:39:34.000Z","size":1381,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-07T00:25:49.459Z","etag":null,"topics":["git","github","tutorial","version-control"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/VagnerBellacosa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-05-31T04:29:58.000Z","updated_at":"2025-02-06T23:39:38.000Z","dependencies_parsed_at":null,"dependency_job_id":"205ec9c5-f668-4a7b-9f66-edff0ba5c6a6","html_url":"https://github.com/VagnerBellacosa/Curso_GitHub","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VagnerBellacosa%2FCurso_GitHub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VagnerBellacosa%2FCurso_GitHub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VagnerBellacosa%2FCurso_GitHub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VagnerBellacosa%2FCurso_GitHub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/VagnerBellacosa","download_url":"https://codeload.github.com/VagnerBellacosa/Curso_GitHub/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240163632,"owners_count":19758038,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["git","github","tutorial","version-control"],"created_at":"2024-11-09T04:21:51.097Z","updated_at":"2025-02-22T11:17:19.975Z","avatar_url":"https://github.com/VagnerBellacosa.png","language":null,"readme":"\u003c!-- PROJECT SHIELDS --\u003e\n\n[![Contributors][contributors-shield]][contributors-url]\n[![Forks][forks-shield]][forks-url]\n[![Stargazers][stars-shield]][stars-url]\n[![Issues][issues-shield]][issues-url]\n[![MIT License][license-shield]][license-url]\n[![LinkedIn][linkedin-shield]][linkedin-url]\n\n\u003c!-- PROJECT LOGO --\u003e\n![Bootcamps na Digital Innovation One](BootCamps/Images/capa.png \"Bootcamps\")\n\n\n\n# Git\n---\n\n\u003eGit é um sistema de controle de versão distribuído gratuito e de código aberto projetado para lidar com tudo, desde projetos pequenos a muito grandes com velocidade e eficiência.  \nGit é fácil de aprender e tem um desempenho extremamente rápido. Ele supera as ferramentas SCM como Subversion, CVS, Perforce e ClearCase com recursos como ramificação local barata, áreas de teste convenientes e vários fluxos de trabalho.\n\nInicialmente projetado e desenvolvido por Linus Torvald em 2005, Git rapidamente se tornou uma das mais populares ferramentas de controle de versão, principalmente em projetos open source.\nMuito do aumento da popularida de Git se deve a plataformas como GitHub a qual vamos ver mais a frente.  \n\u003cbr/\u003e\n\n## Principais plataformas de hospedagem que utilizam Git  \n\u003cbr/\u003e\n\n![](img/github.png) \n\n![](img/gitlab.png) \n\n![](img/bitbucket.png) \n\n\n## GitHub\n---  \n\u003cbr/\u003e\n\nIremos adotar a plataforma GitHub para este treinamento, se trata da plataforma mais popular do mundo que utiliza Git.  \nO GitHub é amplamente utilizado por grande parte dos projetos open sources e também por desenvolvedores para divulgação de projetos e portifólio.  \n\u003cbr/\u003e\n\n\n## Conceitos GIt\n---  \n\u003cbr/\u003e\n\n### Repositório  \n\nLocal onde os arquivos e suas cópias ficarão armazenados. O repositório pode ser local ou remoto, podendo salvar qualquer tipo de arquivo.  \n\u003cbr/\u003e\n\n### Branch  \n\nUm branch é uma cópia de um repositório feito a partir de outra branch. Você pode utilizá-lo para desenvolver o seu projeto individualmente, sem alterar a branch de origem. Assim, só depois de finalizado, será combinado novamente com a branch original.\n\nEssa função é útil, por exemplo, se você tem mais de uma opção para a finalização de um projeto. Você pode testar as opções separadamente e incluir o código definitivo só quando você decidir qual alternativa é a melhor.  \n\nGeralmente, teremos a branch principal que normalmente tem o nome de master ou main (GitHub utilizava por default o master mas passou a adotar o padrão main desde 2020) e as branchs criadas pelos colaboradores.\n\n\u003cbr/\u003e\n\n### Pull request  / Merge Request  \n\nUm Pull/Merge Request é quando você informa aos outros membros da sua equipe que vai incorporar seu branch ao repositório original. Os colaboradores da equipe podem aceitar ou não a Pull Request.\n\nAo abrir essa opção é possível discutir e argumentar o seu trabalho com os cocriadores do projeto.  \n\u003cbr/\u003e\n\n### Merge\n\nApós a finalização de um trabalho em um Branch, é necessário realizar o Merge, fundir a cópia e seus arquivos modificados com a branch principal do projeto. Isso pode ser feito localmente ou no caso de estarmos utilizando uma plataforma como o GitHub isso pode ser feito após análise da solicitação de Merge Request.  \n\u003cbr/\u003e  \n\n![](img/branch.png)  \n\n\n\n### Primeiros passos\n\n- Criar uma conta pessoal no GitHub\n- Instalar Git Client\n  - https://git-scm.com/downloads\n- Criar um novo repositório no Github\n- Criar assinatura\n  - ``` \n  git config --global user.name \"Seu usuario\"\n  git config --global user.email \"email@example.com\n  ```\n- Clonar repositório\n  - ``` \n  git clone \u003curl_repositorio\u003e\n  ```\n\n## Comandos Git\n---  \n\u003cbr/\u003e\n\n### Git Help\n\n```\ngit help\ngit help \u003ccomando\u003e #Comando o qual deseja maiores informações\n```\n\nO comando help irá lhe mostrar qual a função de determinado comandos e quais opções podem ser utilizadas junto com aquele comando.   \n\n#### Git Clone  \n```\ngit clone \u003cendereco-repositorio-remoto\u003e\n```\nO Git clone é um comando para baixar o código-fonte existente de um repositório remoto (como o Github, por exemplo). Utilizando GitHub é possível fazer o *git clone* por https ou ssh.\n\n#### Git Init\n```\ngit init\n```\n\nCria um novo repositório local Git. Com esse comando será criado um novo subdiretório chamado .git que contem todos os arquivos necessários de seu repositório — um esqueleto de repositório Git.  \n\n### Git Remote\n\n```\ngit remote add origin \u003cendereco_repositorio\u003e\n```\n\nVincula o repositório local a um repositório remoto.\n\n\n```\ngit remote\n\ngit remote -v\n```\n\nExibe os repositórios remotos.  \n\n\n#### Git Status  \n```\ngit status\n```\nFornece todas as informações necessárias sobre o branch atual, como por exemplo ficheiros que sofreram alterações que podem ser incluídos no próximo *commit*.  \n\n#### Git Add\n```\ngit add \u003cficheiro\u003e\ngit add .\n```  \nAdiciona um ficheiro ou todos o ficheiros que sofreram modificações e/ou foram incluídos no  próximo *commit*.\nEste comando não altera o repositório, as alterações não são salvas até fazermos um *commit*. \n\n#### Git Restore\n```\ngit restore --staged \u003cficheiro\u003e\n```  \nRemove do próximo *commit* ficheiro que foi incluído no  próximo *commit*.\n\n```\ngit restore \u003cficheiro\u003e\n```  \nRestaura o ficheiro para a última estado dele na Branch. Cuidado, isso irá remover todas suas alterações que não foram realizadas *commit*.\n\n#### Git Reset\n\n```\ngit reset HEAD \u003cficheiro\u003e\n```\n\nRemove do próximo *commit* ficheiro que foi incluído no  próximo *commit*. (igual ao comando git restore --staged\n\n\n```\ngit reset --hard\n```\n\nRetorna o repositório para o último commit na branch a qual está posicionado. Cuidado, todas as suas alterações que não sofreram *commit* serão perdidadas.\n\n#### Git Commit\n\n```\ngit commit -m \"Mensagem explicativa da alteração realizada\"\n```\nEste comando é como definir um ponto de verificação no processo de desenvolvimento, para o qual você pode voltar mais tarde, se necessário. Quando é feito o *git commit* as alterações são confirmadas apenas no repositório local.  \n\n#### Git Pull\n```\ngit push \u003cremote\u003e \u003cnome-do-branch\u003e\ngit push origin main\n```\nEste comando é como definir um ponto de verificação no processo de desenvolvimento, para o qual você pode voltar mais tarde, se necessário. Quando é feito o *git commit* as alterações são confirmadas apenas no repositório local.  \n\n#### Git Push\n```\ngit pull \u003cremote\u003e\ngit pull origin\ngit pull\n```\n\nObtém atualizações do repositório remoto, quando usamos o git pull, ele recebe as atualizações do repositório remoto e aplica imediatamente as alterações mais recentes no seu repositório local.  \n\n#### Git Branch\n\nCom branches, vários desenvolvedores podem trabalhar em paralelo no mesmo projeto simultaneamente.\n\nPode-se usar o comando git branch para criar, listar e excluir branches.\n\nCriação nova:\n\n```\ngit branch \u003cnome-do-branch\u003e\n```\n\nListar branches:\n\n```\ngit branch\ngit branch --list\n```\n\nDeletar branches:\n\n```\ngit branch -d \u003cnome-do-branch\u003e\n```\n\nReplicar branch para o repositório remoto:\n\n```\ngit push -u \u003cremote\u003e \u003cnome-da-branch\u003e\n```   \n\nListar branches que já foram fundidos (merged) com o master  \n\n```\ngit branch --merged\n```   \n\nListar branches que não foram fundidos (merged) com o master  \n\n```\ngit branch --merged\n```\n\n#### Git Checkout\n\nEste é um dos comandos Git mais usados. Para trabalhar em uma branch, primeiro você precisa mudar para ela.\n\nUsamos o git checkout principalmente para alternar de um branch para outro. Também podemos usá-lo para verificar arquivos e commits.\n\n```\ngit checkout \u003cnome-do-branch\u003e\n```\n\nCriar um novo branch e fazer checkout ao mesmo tempo:\n\n```\ngit checkout -b \u003cnome-da-branch\u003e\n```\n\n#### Git Log\n\nExibir histórico do repositório\n\n```\ngit log\n```   \n\nExibir histórico com diff das duas últimas alterações.  \n\n```\ngit log -p -2\n```\n\nExibir resumo do histórico (hash completa, autor, data, comentário e qtde de alterações (+/-))   \n```\ngit log --stat\n```   \n\nExibir informações resumidas em uma linha (hash completa e comentário)  \n\n```\ngit log --pretty=oneline\n```\n\nExibir histórico modificação de um ficheiro  \n\n```\ngit log --diff-filter=M -- \u003cficheiro\u003e\n```\n\n\n#### Git Tags\n\nTags são utilizadas normalmente para marcar o ponto de uma determina versão da aplicação, desta forma, é possível seguir na mesma branch principal e conseguir voltar para pontos de versão apenas utilizando as tags.\n\nCriar uma tag localmente, a tag é criada na branch onde estiver no momento em que executar o comando. \n\n```\ngit tag v1.1 -m \"descricao\"\n```\n\n  \nCriar a tag que foi criada localmente no repositório remoto.\n\n```\ngit push origin \u003ctag_name\u003e\n```\n\nCriar todas as tags locais no repositório remoto.\n\n```\ngit push origin --tags\n``` \n\n#### Git Merge\n\nO git merge permite fazer um merge entre duas branch.\n\n```\ngit merge \u003cbranch_a_realizar_merge\u003e\n```\n\nPara realizar o merge, é necessário estar no branch que deverá receber as alterações. O merge pode acontecer de forma automática ou exigir uma ação manual. O merge automático será feito em arquivos textos que não sofreram alterações nas mesmas linhas, já o merge manual será feito em arquivos textos que sofreram alterações nas mesmas linhas, onde será necessário intervenção e realização de um novo commit após esta intevenção.\n\n----\n\n## Referências:\n\n - https://gist.github.com/leocomelli/2545add34e4fec21ec16\n - https://comandosgit.github.io/\n - https://rogerdudler.github.io/git-guide/index.pt_BR.html\n - https://tableless.com.br/tudo-que-voce-queria-saber-sobre-git-e-github-mas-tinha-vergonha-de-perguntar/\n\n\n\n\n---\n\n#### * DIO - Digital Inovation One *\n######  [Inscreva-se na Dio](https://web.dio.me/sign-up?ref=R5J3ZLTIFS)  \n\n######  [Vagner Bellacosa perfil na Dio](https://web.dio.me/users/vagnerbellacosa?tab=achievements)  \n\n\u003c!-- MARKDOWN LINKS \u0026 IMAGES --\u003e\n\u003c!-- https://www.markdownguide.org/basic-syntax/#reference-style-links --\u003e\n[contributors-shield]: https://img.shields.io/github/contributors/VagnerBellacosa/Curso_GitHub.svg?style=for-the-badge\n[contributors-url]: https://github.com/VagnerBellacosa/Curso_GitHub/graphs/contributors\n[forks-shield]: https://img.shields.io/github/forks/VagnerBellacosa/Curso_GitHub.svg?style=for-the-badge\n[forks-url]: https://github.com/VagnerBellacosa/Curso_GitHub/network/members\n[stars-shield]: https://img.shields.io/github/stars/VagnerBellacosa/Curso_GitHub.svg?style=for-the-badge\n[stars-url]: https://github.com/VagnerBellacosa/Curso_GitHub/stargazers\n[issues-shield]: https://img.shields.io/github/issues/VagnerBellacosa/Curso_GitHub.svg?style=for-the-badge\n[issues-url]: https://github.com/VagnerBellacosa/Curso_GitHub/issues\n[license-shield]: https://img.shields.io/github/license/VagnerBellacosa/Curso_GitHub.svg?style=for-the-badge\n[license-url]: https://github.com/VagnerBellacosa/Curso_GitHub/blob/master/LICENSE.txt\n[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge\u0026logo=linkedin\u0026colorB=555\n[linkedin-url]: https://www.linkedin.com/in/VagnerBellacosa/\n[product-screenshot]: BootCamps/images/capa.png\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvagnerbellacosa%2Fcurso_github","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvagnerbellacosa%2Fcurso_github","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvagnerbellacosa%2Fcurso_github/lists"}