+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ title = "Git" date = 2024-09-18 slides = true +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # Git ------------------------------------------------------------------------- Git is tool that's used in the programming industry. ------------------------------------------------------------------------- Another name for Git is a Version Control System (VCS) tool. ------------------------------------------------------------------------- Specifically to track project work done, and the changes to files we've made. ------------------------------------------------------------------------- The more correct term is Source Control. ------------------------------------------------------------------------- It is NOT a programming language. ------------------------------------------------------------------------- Git is a tool made for (usually) us programmers to track the work we've done. ------------------------------------------------------------------------- Programmer socks (not) included. ------------------------------------------------------------------------- Now we need to ask WHY. ------------------------------------------------------------------------- Why would we need a tool like this? ------------------------------------------------------------------------- Why not use Google Drive instead? ------------------------------------------------------------------------- I will find your IP address. ------------------------------------------------------------------------- In all honesty, ------------------------------------------------------------------------- It's to help keep track of who did what. ------------------------------------------------------------------------- And to work on unique features... ------------------------------------------------------------------------- without affecting the main area/branch of our work. ------------------------------------------------------------------------- When DO we use git? ------------------------------------------------------------------------- Because Git keeps track of the changes we've made to files, ------------------------------------------------------------------------- We can then use it to commit and stage these files, ------------------------------------------------------------------------- and push them to a place where we can store them. ------------------------------------------------------------------------- This place is called a Repository. ------------------------------------------------------------------------- Repositories are hosted on websites like GitLab, GitHub and Forgejo. ------------------------------------------------------------------------- But, an interesting feature of git, is that it allows you to time-travel. ------------------------------------------------------------------------- Meaning that if a project breaks, you can go back to before it broke. ------------------------------------------------------------------------- Now I hear you in the audience asking... ------------------------------------------------------------------------- Why not use SVN? ------------------------------------------------------------------------- The answer is simple. ------------------------------------------------------------------------- ![NAH](intro_to_git/NAH.jpg) ------------------------------------------------------------------------- An actual answer is that Git is Distributed, and SVN in centralized. ------------------------------------------------------------------------- Simply put, devs can store their changes locally on their machines, ------------------------------------------------------------------------- where on SVN they're stored on a central system. ------------------------------------------------------------------------- With a central system you NEED to be connected at all times to work on it. ------------------------------------------------------------------------- You can work locally on git without having to be connected, ------------------------------------------------------------------------- and then push once you're reconnected. ------------------------------------------------------------------------- Back to git. ------------------------------------------------------------------------- Let's start with the basics. ------------------------------------------------------------------------- # Live demonstration time Please get your laptop out ------------------------------------------------------------------------- How to download git & git LFS ------------------------------------------------------------------------- ## Download <> ------------------------------------------------------------------------- ![img.png](intro_to_git/git_download_button.png) ------------------------------------------------------------------------- ![img_1.png](intro_to_git/git_installer.png) ------------------------------------------------------------------------- ![img_2.png](intro_to_git/git_installer_notepad_as_default_editor.png) ------------------------------------------------------------------------- ![img_3.png](intro_to_git/git_installer_rename_master_to_main.png) ------------------------------------------------------------------------- ![img_4.png](intro_to_git/git_installer_checkout_unix.png) ------------------------------------------------------------------------- ![img_5.png](intro_to_git/git_installer_default_rebase_pull.png) ------------------------------------------------------------------------- <> ------------------------------------------------------------------------- Don't do this ![BAD](intro_to_git/bad_message.png) ------------------------------------------------------------------------- ![img_6.png](intro_to_git/forgejo_template_button.png) ------------------------------------------------------------------------- ![img_7.png](intro_to_git/forgejo_template_repo_creation.png) ------------------------------------------------------------------------- ![img_8.png](intro_to_git/forgejo_repo_link.png) ------------------------------------------------------------------------- LFS Install ------------------------------------------------------------------------- ````bash git lfs install ```` ------------------------------------------------------------------------- Setup SSH key (see Readme.md)) ------------------------------------------------------------------------- ![img_9.png](intro_to_git/forgejo_repo_settings.png) ------------------------------------------------------------------------- ![img_10.png](intro_to_git/forgejo_secrets_location.png) ------------------------------------------------------------------------- ![img_12.png](intro_to_git/forgejo_add_secret.png) ------------------------------------------------------------------------- ![img_11.png](intro_to_git/forgejo_ssh_key_example.png) ------------------------------------------------------------------------- ````bash git init git remote add origin git pull origin git add git commit -m "" git push origin ```` ------------------------------------------------------------------------- ``https://.users.skynet.ie/`` ------------------------------------------------------------------------- TroubleShooting ------------------------------------------------------------------------- If you see this: ![img_13.png](intro_to_git/permission_denied_publickey.jpg) > Credit: Geeks for Geeks ------------------------------------------------------------------------- Go here: https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent -------------------------------------------------------------------------