Git and github

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 requiered
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
- Central server can be local on remote
machine directly connected to each of
the programers workstation
- Centralized repozitory is not localy available
- Since everithing 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 need 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 contributors 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.
Design philosophy:
- Free and open source
- blazingly fast
- Distributed
- Data assurance
We’ve established that Git is a version control system, similar but better than the
many alternatives available. So, what makes GitHub so special? Git is a command-
line tool, but the centre 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.
- 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 and github
- GIT merge 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 development branch will have an extraneous merge commit
every time you need to incorporate upstream chanches. If master is very
active this can pollute your development branch history.
- As an alternative to merging you can rebase the development branch into master
branch
$ git chechout development_branch
$git rebase master
- This moves the entire development branch to begin on the top of the master
branch, efectively 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 cleanier project history, it also result 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 want you to do something
immediately and you need to change branches and your code is not ready for
commit and you does not want to loose 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)
- Discard the stashed changes:
$ git stash drop stash@{0}
- Discard all stashed changes:
$ git stash clear
Git and github
1 von 32

Recomendados

Git and Github von
Git and GithubGit and Github
Git and GithubTeodora Ahkozidou
103 views32 Folien
GIT_In_90_Minutes von
GIT_In_90_MinutesGIT_In_90_Minutes
GIT_In_90_Minutesvimukthirandika
785 views65 Folien
Version control system von
Version control systemVersion control system
Version control systemAndrew Liu
1.5K views48 Folien
Git Basic von
Git BasicGit Basic
Git BasicLuke Luo
1.5K views120 Folien
Git von
GitGit
GitMajid Hajiloo
453 views82 Folien
Git training von
Git trainingGit training
Git trainingadm_exoplatform
4.1K views37 Folien

Más contenido relacionado

Was ist angesagt?

Git github von
Git githubGit github
Git githubAnurag Deb
256 views11 Folien
Version controll.pptx von
Version controll.pptxVersion controll.pptx
Version controll.pptxMd. Main Uddin Rony
583 views65 Folien
setting up a repository using GIT von
setting up a repository using GITsetting up a repository using GIT
setting up a repository using GITAshok Kumar Satuluri
205 views7 Folien
Introduction to Git and Github - Google Developer Student Clubs CET, Trivandrum von
Introduction to Git and Github - Google Developer Student Clubs CET, TrivandrumIntroduction to Git and Github - Google Developer Student Clubs CET, Trivandrum
Introduction to Git and Github - Google Developer Student Clubs CET, TrivandrumAbhijitNarayan2
215 views20 Folien
Git Tutorial I von
Git Tutorial IGit Tutorial I
Git Tutorial IJim Yeh
1.2K views39 Folien
Svn vs mercurial vs github von
Svn  vs  mercurial vs  githubSvn  vs  mercurial vs  github
Svn vs mercurial vs githubVinoth Kannan
11.6K views39 Folien

Was ist angesagt?(20)

Introduction to Git and Github - Google Developer Student Clubs CET, Trivandrum von AbhijitNarayan2
Introduction to Git and Github - Google Developer Student Clubs CET, TrivandrumIntroduction to Git and Github - Google Developer Student Clubs CET, Trivandrum
Introduction to Git and Github - Google Developer Student Clubs CET, Trivandrum
AbhijitNarayan2215 views
Git Tutorial I von Jim Yeh
Git Tutorial IGit Tutorial I
Git Tutorial I
Jim Yeh1.2K views
Svn vs mercurial vs github von Vinoth Kannan
Svn  vs  mercurial vs  githubSvn  vs  mercurial vs  github
Svn vs mercurial vs github
Vinoth Kannan11.6K views
Collaborative development with Git | Workshop von Anuchit Chalothorn
Collaborative development with Git | WorkshopCollaborative development with Git | Workshop
Collaborative development with Git | Workshop
Anuchit Chalothorn1.7K views
Nge-GIT (Belajar Git Bareng) von Mizan Riqzia
Nge-GIT (Belajar Git Bareng)Nge-GIT (Belajar Git Bareng)
Nge-GIT (Belajar Git Bareng)
Mizan Riqzia730 views
Git One Day Training Notes von glen_a_smith
Git One Day Training NotesGit One Day Training Notes
Git One Day Training Notes
glen_a_smith3.5K views
Introduction To Git For Version Control Architecture And Common Commands Comp... von SlideTeam
Introduction To Git For Version Control Architecture And Common Commands Comp...Introduction To Git For Version Control Architecture And Common Commands Comp...
Introduction To Git For Version Control Architecture And Common Commands Comp...
SlideTeam313 views
Introduction to git administration von Shawn Doyle
Introduction to git administrationIntroduction to git administration
Introduction to git administration
Shawn Doyle7.7K views
Git, Beginner to Advanced Survey von Rafal Rusin
Git, Beginner to Advanced SurveyGit, Beginner to Advanced Survey
Git, Beginner to Advanced Survey
Rafal Rusin1.4K views

Similar a Git and github

Hacktoberfest intro to Git and GitHub von
Hacktoberfest intro to Git and GitHubHacktoberfest intro to Git and GitHub
Hacktoberfest intro to Git and GitHubDSC GVP
149 views21 Folien
Git 101 von
Git 101Git 101
Git 101jayrparro
2.2K views20 Folien
Git Commands Every Developer Should Know? von
Git Commands Every Developer Should Know?Git Commands Every Developer Should Know?
Git Commands Every Developer Should Know?9 series
138 views67 Folien
Git training (basic) von
Git training (basic)Git training (basic)
Git training (basic)Arashdeepkaur16
62 views20 Folien
Introduction to Git and Github von
Introduction to Git and GithubIntroduction to Git and Github
Introduction to Git and GithubMd Atique Ahmed Ziad
121 views24 Folien
git2.ppt von
git2.pptgit2.ppt
git2.pptMohammadSamiuddin10
2 views14 Folien

Similar a Git and github(20)

Hacktoberfest intro to Git and GitHub von DSC GVP
Hacktoberfest intro to Git and GitHubHacktoberfest intro to Git and GitHub
Hacktoberfest intro to Git and GitHub
DSC GVP149 views
Git 101 von jayrparro
Git 101Git 101
Git 101
jayrparro2.2K views
Git Commands Every Developer Should Know? von 9 series
Git Commands Every Developer Should Know?Git Commands Every Developer Should Know?
Git Commands Every Developer Should Know?
9 series138 views
Git Workshop : Getting Started von Wildan Maulana
Git Workshop : Getting StartedGit Workshop : Getting Started
Git Workshop : Getting Started
Wildan Maulana913 views
Introduction to Git & GitHub von Wasit Shafi
Introduction to Git & GitHubIntroduction to Git & GitHub
Introduction to Git & GitHub
Wasit Shafi19 views
Git for developers von Hacen Dadda
Git for developersGit for developers
Git for developers
Hacen Dadda214 views
Introduction to Git and Github von Max Claus Nunes
Introduction to Git and Github Introduction to Git and Github
Introduction to Git and Github
Max Claus Nunes1.8K views

Último

Business Analyst Series 2023 - Week 3 Session 5 von
Business Analyst Series 2023 -  Week 3 Session 5Business Analyst Series 2023 -  Week 3 Session 5
Business Analyst Series 2023 - Week 3 Session 5DianaGray10
248 views20 Folien
HTTP headers that make your website go faster - devs.gent November 2023 von
HTTP headers that make your website go faster - devs.gent November 2023HTTP headers that make your website go faster - devs.gent November 2023
HTTP headers that make your website go faster - devs.gent November 2023Thijs Feryn
22 views151 Folien
【USB韌體設計課程】精選講義節錄-USB的列舉過程_艾鍗學院 von
【USB韌體設計課程】精選講義節錄-USB的列舉過程_艾鍗學院【USB韌體設計課程】精選講義節錄-USB的列舉過程_艾鍗學院
【USB韌體設計課程】精選講義節錄-USB的列舉過程_艾鍗學院IttrainingIttraining
52 views8 Folien
Evolving the Network Automation Journey from Python to Platforms von
Evolving the Network Automation Journey from Python to PlatformsEvolving the Network Automation Journey from Python to Platforms
Evolving the Network Automation Journey from Python to PlatformsNetwork Automation Forum
13 views21 Folien
virtual reality.pptx von
virtual reality.pptxvirtual reality.pptx
virtual reality.pptxG036GaikwadSnehal
11 views15 Folien
Info Session November 2023.pdf von
Info Session November 2023.pdfInfo Session November 2023.pdf
Info Session November 2023.pdfAleksandraKoprivica4
12 views15 Folien

Último(20)

Business Analyst Series 2023 - Week 3 Session 5 von DianaGray10
Business Analyst Series 2023 -  Week 3 Session 5Business Analyst Series 2023 -  Week 3 Session 5
Business Analyst Series 2023 - Week 3 Session 5
DianaGray10248 views
HTTP headers that make your website go faster - devs.gent November 2023 von Thijs Feryn
HTTP headers that make your website go faster - devs.gent November 2023HTTP headers that make your website go faster - devs.gent November 2023
HTTP headers that make your website go faster - devs.gent November 2023
Thijs Feryn22 views
【USB韌體設計課程】精選講義節錄-USB的列舉過程_艾鍗學院 von IttrainingIttraining
【USB韌體設計課程】精選講義節錄-USB的列舉過程_艾鍗學院【USB韌體設計課程】精選講義節錄-USB的列舉過程_艾鍗學院
【USB韌體設計課程】精選講義節錄-USB的列舉過程_艾鍗學院
Serverless computing with Google Cloud (2023-24) von wesley chun
Serverless computing with Google Cloud (2023-24)Serverless computing with Google Cloud (2023-24)
Serverless computing with Google Cloud (2023-24)
wesley chun11 views
Special_edition_innovator_2023.pdf von WillDavies22
Special_edition_innovator_2023.pdfSpecial_edition_innovator_2023.pdf
Special_edition_innovator_2023.pdf
WillDavies2217 views
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N... von James Anderson
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...
James Anderson85 views
ESPC 2023 - Protect and Govern your Sensitive Data with Microsoft Purview in ... von Jasper Oosterveld
ESPC 2023 - Protect and Govern your Sensitive Data with Microsoft Purview in ...ESPC 2023 - Protect and Govern your Sensitive Data with Microsoft Purview in ...
ESPC 2023 - Protect and Govern your Sensitive Data with Microsoft Purview in ...
PharoJS - Zürich Smalltalk Group Meetup November 2023 von Noury Bouraqadi
PharoJS - Zürich Smalltalk Group Meetup November 2023PharoJS - Zürich Smalltalk Group Meetup November 2023
PharoJS - Zürich Smalltalk Group Meetup November 2023
Noury Bouraqadi127 views

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 requiered 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 - Central server can be local on remote machine directly connected to each of the programers workstation
  • 7. - Centralized repozitory is not localy available - Since everithing 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 need 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 contributors 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. Design philosophy: - Free and open source - blazingly fast - Distributed - Data assurance
  • 11. We’ve established that Git is a version control system, similar but better than the many alternatives available. So, what makes GitHub so special? Git is a command- line tool, but the centre 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.
  • 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
  • 27. - GIT merge 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 development branch will have an extraneous merge commit every time you need to incorporate upstream chanches. If master is very active this can pollute your development branch history.
  • 28. - As an alternative to merging you can rebase the development branch into master branch $ git chechout development_branch $git rebase master - This moves the entire development branch to begin on the top of the master branch, efectively 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 cleanier project history, it also result 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 want you to do something immediately and you need to change branches and your code is not ready for commit and you does not want to loose 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)
  • 31. - Discard the stashed changes: $ git stash drop stash@{0} - Discard all stashed changes: $ git stash clear