0% found this document useful (0 votes)
14 views

15 - Version Control With Git

Uploaded by

humiss545
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
14 views

15 - Version Control With Git

Uploaded by

humiss545
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 51

502045

Software Engineering
Chapter 09
Lesson 15: Version Control with Git

July 30, 2020 502045 - Version Control with Git 1


• Installation in Windows
Hello, Git! • Configuration
• Basic Commands
• GitHub

July 30, 2020 502045 - Version Control with Git 2


• Distributed SCM (source code
management) system
– Look at the word Distributed
– Everyone will have a complete copy
of all history of the project in their
local computers.
What’s
– That is, everyone has a repository
in their own computers. Git?
• Repository, or “Repo” is where Git
stores all necessary information.
It’s usually a folder with name
“.git”

July 30, 2020 502045 - Version Control with Git 3


• Store a complete history of your project
• Whenever you want to record a snapshot of
your project, simply “commit”
– Snapshot is nothing but the current
situation of all files & folders of your project

• Easily “merge” codes with your team-mates.
Why Git?
• Secured backup of your project. Since Git is
distributed, every team-mate has complete
record of the project, and it’s unlikely that
everyone’s computer will crash at the same
time!

July 30, 2020 502045 - Version Control with Git 4


• Download msysgit
from
Windows – http://code.google.co
setup m/p/msysgit/downloa
ds/list?q=full+installer
+official+git

July 30, 2020 502045 - Version Control with Git 5


Start Installation…

July 30, 2020 502045 - Version Control with Git 6


Make sure you tick these...

July 30, 2020 502045 - Version Control with Git 7


Go on…

July 30, 2020 502045 - Version Control with Git 8


Almost there…

July 30, 2020 502045 - Version Control with Git 9


• You’ve successfully
installed Git in your
Windows. Done
• Now what? Installing!
• Create a new
project?

July 30, 2020 502045 - Version Control with Git 10


Go to the folder you want to start your project.

Look, I’ll have my project in this location:


G:\WS\Lap-Prog\Git-Practice

July 30, 2020 502045 - Version Control with Git 11


Right click on this folder and click “Git Bash here”

Every time you want to do something with Git, you will need to do this.

July 30, 2020 502045 - Version Control with Git 12


Say hello to the “Git Bash”

Yes, it’s a command-prompt interface. Don’t get worried…

July 30, 2020 502045 - Version Control with Git 13


New Command: “git init”

• Type “git init” in Git Bash (the command-prompt


window) to initiate your repository.
• You’ll see that a “.git” hidden folder is created.
This folder is the Repository!!!

July 30, 2020 502045 - Version Control with Git 14


Congratulations!

• You’ve successfully created your Git Repo.


• Each time you want to use Git, you’ll need to:

July 30, 2020 502045 - Version Control with Git 15


Tell Git who you are…

• Type in Git Bash following 2 commands:


– git config --global user.name "Your Name"
– git config --global user.email
[email protected]

• Congratulations, you’ve completed configuring your


Git Bash.

July 30, 2020 502045 - Version Control with Git 16


Basic
Commands

July 30, 2020 502045 - Version Control with Git 17


Create a New File in your project

• I’ve created a new Readme.txt file in my


project’s location…

July 30, 2020 502045 - Version Control with Git 18


New Command: “git status”

This command shows current status of your Repository, i.e. which files are
Modified, which files are not yet tracked by Git etc…

It shows that, Readme.txt is an “Untracked” file. That is, Git does not know
Anything about this file. You should type git add –A to start tracking
All untracked files.

July 30, 2020 502045 - Version Control with Git 19


New Command: “git commit”

• Use git add -A to add start tracking all


Untracked files.
• Then use git commit -m “Message telling what
you did” command to actually Commit your
changes.
– Whenever you commit, you store a complete
history/snapshot of your project. Later
anytime, you may view the snapshots of your
project wherever you made commit.

July 30, 2020 502045 - Version Control with Git 20


Add & Commit

• Whenever you wish to record snapshot of


your project:
– git add -A command in Git Bash will add all
new & modified files for commit-list.
– Then, git commit -m “custom message”
command will actually do the commit.
• Use a message telling what you’ve done, say,
“removed database dependancy”

July 30, 2020 502045 - Version Control with Git 21


New Command: “git log”

• Displays a list of all commits you’ve made


so far.
– Tips: You want to go back to some previous
commit? Hmm… you will need a list of all
commits made in your project, and here git
log command comes!
• Food for brain: how does Git uniquely
identify each commit? It should assign
each commit some number or Id…
July 30, 2020 502045 - Version Control with Git 22
Back to our example scenario

• After creating the Readme.txt file, we


executed following commands in Git Bash,
sequentially:
– git status
– git add -A
– git commit -m “My First Commit”
– git log
• Output window looks like the image of next
slide…
July 30, 2020 502045 - Version Control with Git 23
July 30, 2020 502045 - Version Control with Git 24
Now make some changes in
Readme.txt

July 30, 2020 502045 - Version Control with Git 25


And create another file main.cpp or
anything…

July 30, 2020 502045 - Version Control with Git 26


Now type git status in Git Bash
• Two types of status for files:
– Changed (modified) file: Readme.txt (already tracked)
– Totally Untracked file: main.cpp - because we’ve just created it
and haven’t told Git yet to start tracking it.

July 30, 2020 502045 - Version Control with Git 27


Add, Commit, and View log…

• Execute following commands in Git Bash,


sequentially:
– git add -A
– git commit -m “My second Commit”
– git log
• Output window is on next slide…

July 30, 2020 502045 - Version Control with Git 28


July 30, 2020 502045 - Version Control with Git 29
Commit IDs

• When we execute git log this time we see two


commits!
• Each commit is identified by a string of 40
characters (say
“7db40dfe28a9c1fb829a628048dcfc9c80589e
ec” from our 1st commit example)
– The strings are underlined using red color in the
image of the previous slide.
• We will use these strings to uniquely refer any
particular commit of our project.
July 30, 2020 502045 - Version Control with Git 30
Teamwork
with
GitHub

July 30, 2020 502045 - Version Control with Git 31


Working in a team
• You and your team-mates.
• Everyone has their own local Git repo in their personal computers,
and everyone is committing in their local repos (Local repo is the
Git repo in someone’s own computer).
• How will you get the commits made by your team-mates merged in
your local Repo?
– And vice versa, how will your team-mates get the commits made
by you merged in their local repo?
• To get others’ commits merged in your local repo, you pull from their
repo.
– And you push to their repo so that their local repo is merged
with your commits! Making sense, right? 

July 30, 2020 502045 - Version Control with Git 32


You’ll probably need a server…
• So to get the commits made by others, you should pull from their
local repos i.e. their computers.
• But wait… what if their computer has no Real IP? Then you can not
send/receive network packets to/from it. Most of us don’t have real
IP.
• So we use a server which has a Real IP. Say, GitHub.com or
Assembla.com – they provide us free Git hosting.
• They are nothing but Git repos like the repos in our local machine.
But since they have real IP, we can directly push from & pull to it.
– All team-mates including me push to the repo located in a
server
– All team-mates including me pull from the repo located in that
server.
• This repo is commonly addressed as “origin”
July 30, 2020 502045 - Version Control with Git 33
Another problem… how will the server
authenticate the team-mates?
• Common approach: Username-Password
system.
• But typically Git allows using Public &
Private keys to authenticate someone.
– Think of “public key” as your username. You can
safely supply anyone your public key.
– Think of “private key” as your password. You
should NEVER provide anyone your private key!
• Keys are nothing but some text/characters. LONG
stream of characters!
July 30, 2020 502045 - Version Control with Git 34
Generate Public & Private keys
• Type following commands in Git Bash:
– cd ~
– ssh-keygen.exe -t rsa -C "[email protected]"

July 30, 2020 502045 - Version Control with Git 35


• Press <enter> in all prompts.
• Note the directory where the keys are
created (red colored underlined)

July 30, 2020 502045 - Version Control with Git 36


Open the directory (red colored
underlined in previous slide’s image)

July 30, 2020 502045 - Version Control with Git 37


You can open the files with Notepad++
• If you open them with Notepad++/Text Editor, you can find the keys.

July 30, 2020 502045 - Version Control with Git 38


Now you can open a free account at
http://github.com
• After completing registration, add your PUBLIC key…

July 30, 2020 502045 - Version Control with Git 39


Copy and Paste your PUBLIC key

July 30, 2020 502045 - Version Control with Git 40


• Cool! You’ve successfully provided you PUBLIC key at GitHub.com.
Now you can create your project.

1. Provide a Name

2. Don’t check this!

3. Click to Create Repository.


July 30, 2020 502045 - Version Control with Git 41
You’ll be given URL to your Repo.

For our example, the URL is: [email protected]:bsadd/My-Cool-Project.git

July 30, 2020 502045 - Version Control with Git 42


Let’s Push to GitHub’s repo!

• Start Git Bash like usual…

July 30, 2020 502045 - Version Control with Git 43


Our First Push
• Type following command in Git Bash:
– git remote add origin [email protected]:bsadd/My-Cool-Project.git
– git push origin master

July 30, 2020 502045 - Version Control with Git 44


Verify in GitHub’s Website

July 30, 2020 502045 - Version Control with Git 45


New Command: “git clone”
• Now you’ve pushed the initial repo to GitHub.
• Then, your team-mates should know about this repo and grab the
code from it for the first time.
– All of your team-mates should issue this command in their Git Bash:
– git clone [email protected]:bsadd/My-Cool-Project.git
• Remember: they should not create Git repo in their computer. Only
one person in the team should create the repo using git init
command
– Then he should push it to a server using git push command
– And all other team mates should Clone the repo to their local computers
using git clone command.
• Note: You should add your team-members in the Project Admin
area. Otherwise they will not have access to push in the GitHub
repo (see image in next slide)

July 30, 2020 502045 - Version Control with Git 46


Adding team members

I’ve added “shafiul” in my project. This is the username of


Shafiul Azam (my team-mate ) in GitHub.com
July 30, 2020 502045 - Version Control with Git 47
Cloning

• When Shafiul will clone using git clone


command, a new project will be created
for him.
• Then he will be able to
push/pull/add/commit whatever…

July 30, 2020 502045 - Version Control with Git 48


Shafiul, who is using Linux (another kind of
operating system like Windows), cloned my Repo.

Wow! Git has created the repo for him with my codes “Readme.txt” & “main.cpp”
Note that this is his own local repo in his computer. He can do whatever he wants..
July 30, 2020 502045 - Version Control with Git 49
Shafiul will Push…

• When Shafiul will finish editing, he will


eventually type following commands in his
Git Bash:
– git add -A
– git commit -m “some message”
– git push origin master
• When he pushes, GitHub’s repo will be
updated with his changes.

July 30, 2020 502045 - Version Control with Git 50


And I will Pull!

• To get the changes made by shafiul


automatically merged in my local
computer, I will need to use command git
pull
– git pull origin master
• Now my local repo will be updated with
Shafiul’s changes.
• Similarly I can push and Shafiul will need
to pull…
July 30, 2020 502045 - Version Control with Git 51

You might also like