SlideShare a Scribd company logo
Created by: Teodora Achkozidou
Date: May 2020
 Terminology
 CVCS / DVCS
 What is GIT & what is GITHUB
 Quick Start
 Version control system
 Branches
 GIT basics
 Comparison in GIT
 Branching & Merging
 GIT rebase
 GIT stashing
Git Goals and Objectives
 Repository contain: files, history, configuration managed by GIT
 Working Directory / Repository
 Tree stages of GIT (Working directory, Staging area /pro commit staging
area/,Commit /GIT repository - history/)
 Remote repository (GITHUB)
 Master branch
What you get from VERSION CONTROL SYSTEM
Save you from creating multiple backups of your files
Allow multiple people to work on the same time on file
Track changes & also who have made the changes
Easy to switch back to folder versions as and when required
Make you more productive
Version Control is the management of changes to documents, computer program,
large websites and other collection of information
- Centralized Version Control System (CVCS)
- Distributed Version Control System (DVCS)
- CVCS uses a central server to store all
files
- It works on a single repository to which
users can directly access a central server
- The central server can be local on the
remote machine directly connected to
each of the programmers workstations
- The centralized repository is not locally available
- Since everything is centralized in any case of the central server getting crash or
corrupted will result in losing the entire data of project
- In DVCS every contributor has a local
copy or clone of the main repository
- The developer can update their local
repository with new data from the
central server by an operation called
“pull” and affect changes to the main
repository bu an operation called
“push” from their local repository
- All operations are very fast because the tool needs to access the HDD only
- Committing new change-set can be done locally without manipulating the data on
the main repository
- If the central server get crashed at any point of the time, the data can be easily
recovered from anyone of the contributor's local repositories
The most widely used modern version control system in the world today is Git. Git is a
mature, actively maintained open source project originally developed in 2005 by Linus
Torvalds, the famous creator of the Linux operating system kernel. A staggering number
of software projects rely on Git for version control, including commercial projects as well
as open-source.
source - https://gdgucc.blogspot.com/2017/10/what-is-git.html
Design philosophy:
- Free and open-source
- blazingly fast
- Distributed
- Data assurance
We’ve established that Git is a version control system, similar to but better than the
many alternatives available. So, what makes GitHub so special? Git is a command-
line tool, but the center around which all things involving Git revolve is the hub—
GitHub.com—where developers store their projects and network with like-minded
people.
A repository (usually abbreviated to “repo”) is a location where all the files for a
particular project are stored. Each project has its own repo, and you can access it
with a unique URL.
Source - https://www.howtogeek.com/180167/htg-explains-what-is-github-and-what-
do-geeks-use-it-for/
- First step is to download GIT from the link below, it is available for all operation
systems:
https://git-scm.com/downloads
- GIT Basic start configuration
$ git config --global user.name “Your Name Here”
$ git config --global user.email “email@example.com”
$ git config --list (show all properties)
$git help <attribute> (example: $git help add)
Enter to the folder you want to use for the project and open terminal on it
$git init
Commiting first file
$ git status
$ git add file.txt | $ git add . (add all files you made changes on)
$ git commit –m “message with wich you want to commit the file”
$ git push origin master (explanation after)
If you want to see the changes from certain user
$ git log --author ”name”
Working
Area
Staging Repository
Verify changes in GIT
$ git diff
Compare staged with repo in GIT
$git diff --staged
Delete file
$git rm file.txt
GIT – DVCS is a tool
GITHUB is
- Code hosting platform
- Central repository
- Repository hosting service
To create a central repository:
$ git pull origin master
$ git clone https://github.com/user/repo
$ git push origin master
- Branch in GIT is pointer to commit
- To create a new branch we use the following command:
$ git branch <branch_name>
$ git branch development
$ git checkout development (to switch branches)
$ git branch (to check in which branch you are)
- Get to the branch you want to merge the changes (for example from development
to master)
$ git checkout master
$ git merge development
$ git push origin master (sync with github)
$ git reset HEAD filename
(HEAD - alias for the current branch ex. $git reset master|development filename)
$ git reset HEAD~ filename
(HEAD~ last commit reverted | HEAD~5 delete the last 5 commits from the
history)
The prefered command for many cases is
$ git revert commit_id
You can coppy the commit_id from
$ git log
$ git reset HEAD filename
$ git checkout --filename
$git rm –rf directory
(r – recursive, f – force, all in the direcory)
$ git commit –m “message” | $ git push origin master
$ git mv filename new_filename
$ git mv filename new_dir_path
Command to verify last commit
$ git log
Get GIT abbrev commit hash
$ git log --abbrev --log
GIT oneline commit
$ git log --oneline --graph --decorate
Logs that have been executed last day or last 5 days
$ git log --since=“5 days ago”
$ git show commit_id
$ git help log
GIT alias is a short way to display a results from long command
In order to add an alias we need to add the alias at GIT global config
$ git config --global <shot_command> “long_command”
Example: $ git config global alias.history “log --all --graph --decorate --oneline”
or:
$ nano ~/gitconfig
$ nano .gitignore
GIT ignore pattern example:
# exclude everything except directory
/*
!/dir
/dir/*
!/dir/bar
Working directory and staging directory
$ git diff
$ git fiff filename
Compare working directory and repository
$ git diff HEAD (compare working directory with last commit)
$ git diff HEAD filename
Staging area and repository
$ git diff --staged HEAD
$ git diff --staged HEAD filename
Compare commits in GIT
$ git diff commit_it commit_it
$ git diff HEAD HEAD^ (compare last commit and the commit previews last head -
1)
Verify branch
$ git branch -a
Switch GIT branches
$ git checkout <branch_name>
Rename branch
$ git branch –m <old_name> <new_name>
Delete branch
$ git branch -d <branch_name>
(before delete branch switch to another)
Merge one branch to another
$ git merge <source>
Example (first move to master):
$ git merge development
- GIT merge to create a new “merge commit” in the development branch that ties
together the histories of both branches, giving you a branch structure that looks
like graph
- How this impact:
in this case, the development branch will have an extraneous merge commit
every time you need to incorporate upstream changes. If the master is very
active this can pollute your development branch history.
- As an alternative to merging you can rebase the development branch into the
master branch
$ git checkout development_branch
$git rebase master
- This moves the entire development branch to begin on the top of the master
branch, effectively incorporating all of the new commits in the master. Instead of
using merge commit, re-base re-write the project history by creating brand new
commits for each commit in the original branch
- Benefits:
you get much cleaner project history, it also results in the perfectly linear
project history
What is GIT Stash?
- When you create a stash, you are saving uncommitted changes so that you can
work on other things without losing your changes.
Example: you are working on a function, but your boss wants you to do something
immediately and you need to change branches and your code is not ready for
commitment and you do not want to lose your work as well… so you stash 
$ git stash save “message of what you were doing”
$ git stash list (list the changes made on stash with them id)
In order to work again on the stashed file:
$ git stash apply stash_id (example: stash@{1})
When you’re ready to finalize these saved changes, you have two options: apply or
pop.
- Apply will take the stashed changes, apply them to your working directory, and
keep the changes saved as a stash.
$ git stash apply stash@{0}
- Pop will do the exact same thing for the first two steps, but it will permanently
delete the stash.
$ git stash pop (will drag the very first stash on the stash list)
Source - https://dzone.com/articles/learning-git-what-is-stashing
- Discard the stashed changes:
$ git stash drop stash@{0}
- Discard all stashed changes:
$ git stash clear
Git and Github

More Related Content

What's hot

Advanced Git Tutorial
Advanced Git TutorialAdvanced Git Tutorial
Advanced Git Tutorial
Sage Sharp
 
Git - An Introduction
Git - An IntroductionGit - An Introduction
Git - An Introduction
Behzad Altaf
 
Git and GitHub | Concept about Git and GitHub Process | Git Process overview
Git and GitHub | Concept about Git and GitHub Process | Git Process overviewGit and GitHub | Concept about Git and GitHub Process | Git Process overview
Git and GitHub | Concept about Git and GitHub Process | Git Process overview
Rueful Robin
 
Git - Basic Crash Course
Git - Basic Crash CourseGit - Basic Crash Course
Git - Basic Crash Course
Nilay Binjola
 
Version Control & Git
Version Control & GitVersion Control & Git
Version Control & Git
Jason Byrne
 
Git basics to advance with diagrams
Git basics to advance with diagramsGit basics to advance with diagrams
Git basics to advance with diagrams
Dilum Navanjana
 
Introduction to GitHub
Introduction to GitHubIntroduction to GitHub
Introduction to GitHub
Nishan Bose
 
GitHub Basics - Derek Bable
GitHub Basics - Derek BableGitHub Basics - Derek Bable
GitHub Basics - Derek Bable
"FENG "GEORGE"" YU
 
Learning git
Learning gitLearning git
Learning git
Sid Anand
 
Git training v10
Git training v10Git training v10
Git training v10
Skander Hamza
 
Introduction git
Introduction gitIntroduction git
Introduction git
Dian Sigit Prastowo
 
What's New for GitLab CI/CD February 2020
What's New for GitLab CI/CD February 2020What's New for GitLab CI/CD February 2020
What's New for GitLab CI/CD February 2020
Noa Harel
 
git and github
git and githubgit and github
git and github
Darren Oakley
 
Introduction to Git and Github
Introduction to Git and GithubIntroduction to Git and Github
Introduction to Git and Github
Houari ZEGAI
 
Git Started With Git
Git Started With GitGit Started With Git
Git Started With Git
Nick Quaranto
 
Git in 10 minutes
Git in 10 minutesGit in 10 minutes
Git in 10 minutes
Safique Ahmed Faruque
 
Introduction to git hub
Introduction to git hubIntroduction to git hub
Introduction to git hub
Naveen Pandey
 
Git basics
Git basicsGit basics
Git basics
GHARSALLAH Mohamed
 
Git One Day Training Notes
Git One Day Training NotesGit One Day Training Notes
Git One Day Training Notes
glen_a_smith
 
Version Control History and Git Basics
Version Control History and Git BasicsVersion Control History and Git Basics
Version Control History and Git Basics
Sreedath N S
 

What's hot (20)

Advanced Git Tutorial
Advanced Git TutorialAdvanced Git Tutorial
Advanced Git Tutorial
 
Git - An Introduction
Git - An IntroductionGit - An Introduction
Git - An Introduction
 
Git and GitHub | Concept about Git and GitHub Process | Git Process overview
Git and GitHub | Concept about Git and GitHub Process | Git Process overviewGit and GitHub | Concept about Git and GitHub Process | Git Process overview
Git and GitHub | Concept about Git and GitHub Process | Git Process overview
 
Git - Basic Crash Course
Git - Basic Crash CourseGit - Basic Crash Course
Git - Basic Crash Course
 
Version Control & Git
Version Control & GitVersion Control & Git
Version Control & Git
 
Git basics to advance with diagrams
Git basics to advance with diagramsGit basics to advance with diagrams
Git basics to advance with diagrams
 
Introduction to GitHub
Introduction to GitHubIntroduction to GitHub
Introduction to GitHub
 
GitHub Basics - Derek Bable
GitHub Basics - Derek BableGitHub Basics - Derek Bable
GitHub Basics - Derek Bable
 
Learning git
Learning gitLearning git
Learning git
 
Git training v10
Git training v10Git training v10
Git training v10
 
Introduction git
Introduction gitIntroduction git
Introduction git
 
What's New for GitLab CI/CD February 2020
What's New for GitLab CI/CD February 2020What's New for GitLab CI/CD February 2020
What's New for GitLab CI/CD February 2020
 
git and github
git and githubgit and github
git and github
 
Introduction to Git and Github
Introduction to Git and GithubIntroduction to Git and Github
Introduction to Git and Github
 
Git Started With Git
Git Started With GitGit Started With Git
Git Started With Git
 
Git in 10 minutes
Git in 10 minutesGit in 10 minutes
Git in 10 minutes
 
Introduction to git hub
Introduction to git hubIntroduction to git hub
Introduction to git hub
 
Git basics
Git basicsGit basics
Git basics
 
Git One Day Training Notes
Git One Day Training NotesGit One Day Training Notes
Git One Day Training Notes
 
Version Control History and Git Basics
Version Control History and Git BasicsVersion Control History and Git Basics
Version Control History and Git Basics
 

Similar to Git and Github

Git introduction
Git introductionGit introduction
Git introduction
satyendrajaladi
 
Hacktoberfest intro to Git and GitHub
Hacktoberfest intro to Git and GitHubHacktoberfest intro to Git and GitHub
Hacktoberfest intro to Git and GitHub
DSC GVP
 
Git 101
Git 101Git 101
Git 101
jayrparro
 
Git Commands Every Developer Should Know?
Git Commands Every Developer Should Know?Git Commands Every Developer Should Know?
Git Commands Every Developer Should Know?
9 series
 
Git
GitGit
Introduction to Git and Github
Introduction to Git and GithubIntroduction to Git and Github
Introduction to Git and Github
Md Atique Ahmed Ziad
 
Git github
Git githubGit github
Git github
Anurag Deb
 
Git training (basic)
Git training (basic)Git training (basic)
Git training (basic)
Arashdeepkaur16
 
Github By Nyros Developer
Github By Nyros DeveloperGithub By Nyros Developer
Github By Nyros Developer
Nyros Technologies
 
git2.ppt
git2.pptgit2.ppt
Git Memento of basic commands
Git Memento of basic commandsGit Memento of basic commands
Git Memento of basic commands
Zakaria Bouazza
 
Mini-training: Let’s Git It!
Mini-training: Let’s Git It!Mini-training: Let’s Git It!
Mini-training: Let’s Git It!
Betclic Everest Group Tech Team
 
GIT By Sivakrishna
GIT By SivakrishnaGIT By Sivakrishna
GIT By Sivakrishna
Nyros Technologies
 
git github PPT_GDSCIIITK.pptx
git github PPT_GDSCIIITK.pptxgit github PPT_GDSCIIITK.pptx
git github PPT_GDSCIIITK.pptx
AbelPhilipJoseph
 
Understanding about git
Understanding about gitUnderstanding about git
Understanding about git
Sothearin Ren
 
Git Workshop : Getting Started
Git Workshop : Getting StartedGit Workshop : Getting Started
Git Workshop : Getting StartedWildan Maulana
 
1-Intro to VC & GIT PDF.pptx
1-Intro to VC & GIT PDF.pptx1-Intro to VC & GIT PDF.pptx
1-Intro to VC & GIT PDF.pptx
HuthaifaAlmaqrami1
 
Introduction to Git and Github
Introduction to Git and Github Introduction to Git and Github
Introduction to Git and Github
Max Claus Nunes
 
git2.ppt
git2.pptgit2.ppt
git2.ppt
ssusered2ec2
 

Similar to Git and Github (20)

Git introduction
Git introductionGit introduction
Git introduction
 
Hacktoberfest intro to Git and GitHub
Hacktoberfest intro to Git and GitHubHacktoberfest intro to Git and GitHub
Hacktoberfest intro to Git and GitHub
 
Git 101
Git 101Git 101
Git 101
 
Git Commands Every Developer Should Know?
Git Commands Every Developer Should Know?Git Commands Every Developer Should Know?
Git Commands Every Developer Should Know?
 
Git
GitGit
Git
 
Introduction to Git and Github
Introduction to Git and GithubIntroduction to Git and Github
Introduction to Git and Github
 
Git github
Git githubGit github
Git github
 
Git training (basic)
Git training (basic)Git training (basic)
Git training (basic)
 
setting up a repository using GIT
setting up a repository using GITsetting up a repository using GIT
setting up a repository using GIT
 
Github By Nyros Developer
Github By Nyros DeveloperGithub By Nyros Developer
Github By Nyros Developer
 
git2.ppt
git2.pptgit2.ppt
git2.ppt
 
Git Memento of basic commands
Git Memento of basic commandsGit Memento of basic commands
Git Memento of basic commands
 
Mini-training: Let’s Git It!
Mini-training: Let’s Git It!Mini-training: Let’s Git It!
Mini-training: Let’s Git It!
 
GIT By Sivakrishna
GIT By SivakrishnaGIT By Sivakrishna
GIT By Sivakrishna
 
git github PPT_GDSCIIITK.pptx
git github PPT_GDSCIIITK.pptxgit github PPT_GDSCIIITK.pptx
git github PPT_GDSCIIITK.pptx
 
Understanding about git
Understanding about gitUnderstanding about git
Understanding about git
 
Git Workshop : Getting Started
Git Workshop : Getting StartedGit Workshop : Getting Started
Git Workshop : Getting Started
 
1-Intro to VC & GIT PDF.pptx
1-Intro to VC & GIT PDF.pptx1-Intro to VC & GIT PDF.pptx
1-Intro to VC & GIT PDF.pptx
 
Introduction to Git and Github
Introduction to Git and Github Introduction to Git and Github
Introduction to Git and Github
 
git2.ppt
git2.pptgit2.ppt
git2.ppt
 

Recently uploaded

FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
RinaMondal9
 

Recently uploaded (20)

FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
 

Git and Github

  • 1. Created by: Teodora Achkozidou Date: May 2020
  • 2.  Terminology  CVCS / DVCS  What is GIT & what is GITHUB  Quick Start  Version control system  Branches  GIT basics  Comparison in GIT  Branching & Merging  GIT rebase  GIT stashing
  • 3. Git Goals and Objectives  Repository contain: files, history, configuration managed by GIT  Working Directory / Repository  Tree stages of GIT (Working directory, Staging area /pro commit staging area/,Commit /GIT repository - history/)  Remote repository (GITHUB)  Master branch
  • 4. What you get from VERSION CONTROL SYSTEM Save you from creating multiple backups of your files Allow multiple people to work on the same time on file Track changes & also who have made the changes Easy to switch back to folder versions as and when required Make you more productive
  • 5. Version Control is the management of changes to documents, computer program, large websites and other collection of information - Centralized Version Control System (CVCS) - Distributed Version Control System (DVCS)
  • 6. - CVCS uses a central server to store all files - It works on a single repository to which users can directly access a central server - The central server can be local on the remote machine directly connected to each of the programmers workstations
  • 7. - The centralized repository is not locally available - Since everything is centralized in any case of the central server getting crash or corrupted will result in losing the entire data of project
  • 8. - In DVCS every contributor has a local copy or clone of the main repository - The developer can update their local repository with new data from the central server by an operation called “pull” and affect changes to the main repository bu an operation called “push” from their local repository
  • 9. - All operations are very fast because the tool needs to access the HDD only - Committing new change-set can be done locally without manipulating the data on the main repository - If the central server get crashed at any point of the time, the data can be easily recovered from anyone of the contributor's local repositories
  • 10. The most widely used modern version control system in the world today is Git. Git is a mature, actively maintained open source project originally developed in 2005 by Linus Torvalds, the famous creator of the Linux operating system kernel. A staggering number of software projects rely on Git for version control, including commercial projects as well as open-source. source - https://gdgucc.blogspot.com/2017/10/what-is-git.html Design philosophy: - Free and open-source - blazingly fast - Distributed - Data assurance
  • 11. We’ve established that Git is a version control system, similar to but better than the many alternatives available. So, what makes GitHub so special? Git is a command- line tool, but the center around which all things involving Git revolve is the hub— GitHub.com—where developers store their projects and network with like-minded people. A repository (usually abbreviated to “repo”) is a location where all the files for a particular project are stored. Each project has its own repo, and you can access it with a unique URL. Source - https://www.howtogeek.com/180167/htg-explains-what-is-github-and-what- do-geeks-use-it-for/
  • 12. - First step is to download GIT from the link below, it is available for all operation systems: https://git-scm.com/downloads - GIT Basic start configuration $ git config --global user.name “Your Name Here” $ git config --global user.email “email@example.com” $ git config --list (show all properties) $git help <attribute> (example: $git help add)
  • 13. Enter to the folder you want to use for the project and open terminal on it $git init Commiting first file $ git status $ git add file.txt | $ git add . (add all files you made changes on) $ git commit –m “message with wich you want to commit the file” $ git push origin master (explanation after) If you want to see the changes from certain user $ git log --author ”name”
  • 15. Verify changes in GIT $ git diff Compare staged with repo in GIT $git diff --staged Delete file $git rm file.txt
  • 16. GIT – DVCS is a tool GITHUB is - Code hosting platform - Central repository - Repository hosting service To create a central repository: $ git pull origin master $ git clone https://github.com/user/repo $ git push origin master
  • 17. - Branch in GIT is pointer to commit - To create a new branch we use the following command: $ git branch <branch_name> $ git branch development $ git checkout development (to switch branches) $ git branch (to check in which branch you are)
  • 18. - Get to the branch you want to merge the changes (for example from development to master) $ git checkout master $ git merge development $ git push origin master (sync with github)
  • 19. $ git reset HEAD filename (HEAD - alias for the current branch ex. $git reset master|development filename) $ git reset HEAD~ filename (HEAD~ last commit reverted | HEAD~5 delete the last 5 commits from the history) The prefered command for many cases is $ git revert commit_id You can coppy the commit_id from $ git log
  • 20. $ git reset HEAD filename $ git checkout --filename $git rm –rf directory (r – recursive, f – force, all in the direcory) $ git commit –m “message” | $ git push origin master $ git mv filename new_filename $ git mv filename new_dir_path
  • 21. Command to verify last commit $ git log Get GIT abbrev commit hash $ git log --abbrev --log GIT oneline commit $ git log --oneline --graph --decorate Logs that have been executed last day or last 5 days $ git log --since=“5 days ago” $ git show commit_id $ git help log
  • 22. GIT alias is a short way to display a results from long command In order to add an alias we need to add the alias at GIT global config $ git config --global <shot_command> “long_command” Example: $ git config global alias.history “log --all --graph --decorate --oneline” or: $ nano ~/gitconfig
  • 23. $ nano .gitignore GIT ignore pattern example: # exclude everything except directory /* !/dir /dir/* !/dir/bar
  • 24. Working directory and staging directory $ git diff $ git fiff filename Compare working directory and repository $ git diff HEAD (compare working directory with last commit) $ git diff HEAD filename Staging area and repository $ git diff --staged HEAD $ git diff --staged HEAD filename Compare commits in GIT $ git diff commit_it commit_it $ git diff HEAD HEAD^ (compare last commit and the commit previews last head - 1)
  • 25. Verify branch $ git branch -a Switch GIT branches $ git checkout <branch_name> Rename branch $ git branch –m <old_name> <new_name> Delete branch $ git branch -d <branch_name> (before delete branch switch to another) Merge one branch to another $ git merge <source> Example (first move to master): $ git merge development
  • 26.
  • 27. - GIT merge to create a new “merge commit” in the development branch that ties together the histories of both branches, giving you a branch structure that looks like graph - How this impact: in this case, the development branch will have an extraneous merge commit every time you need to incorporate upstream changes. If the master is very active this can pollute your development branch history.
  • 28. - As an alternative to merging you can rebase the development branch into the master branch $ git checkout development_branch $git rebase master - This moves the entire development branch to begin on the top of the master branch, effectively incorporating all of the new commits in the master. Instead of using merge commit, re-base re-write the project history by creating brand new commits for each commit in the original branch - Benefits: you get much cleaner project history, it also results in the perfectly linear project history
  • 29. What is GIT Stash? - When you create a stash, you are saving uncommitted changes so that you can work on other things without losing your changes. Example: you are working on a function, but your boss wants you to do something immediately and you need to change branches and your code is not ready for commitment and you do not want to lose your work as well… so you stash  $ git stash save “message of what you were doing” $ git stash list (list the changes made on stash with them id) In order to work again on the stashed file: $ git stash apply stash_id (example: stash@{1})
  • 30. When you’re ready to finalize these saved changes, you have two options: apply or pop. - Apply will take the stashed changes, apply them to your working directory, and keep the changes saved as a stash. $ git stash apply stash@{0} - Pop will do the exact same thing for the first two steps, but it will permanently delete the stash. $ git stash pop (will drag the very first stash on the stash list) Source - https://dzone.com/articles/learning-git-what-is-stashing
  • 31. - Discard the stashed changes: $ git stash drop stash@{0} - Discard all stashed changes: $ git stash clear