WIP: git slides WIP

This commit is contained in:
Prabuddha Hans 2025-09-22 13:35:15 +01:00
parent 951f34afdb
commit d53435b390

View file

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