4. Why is it called
Git?
"the stupid content tracker”
Linus Torvalds has quipped about
the name "git", which is British English
slang for a stupid or unpleasant person:
"I'm an egotistical bastard, and
I name all my projects after myself. First
Linux, now git."
(Note that Torvalds did not in fact name
Linux.)
5. Central vs Distributed VCS
CENTRAL VCS DISTRIBUTED VCS
Each can act as a serverthe dev team only interacts with the main server
6. Distributed VCS
Benefits
You can start a repository at any time on your
local computer
Commit history is stored locally
Redundancy - each working copy effectively
functions as a remote backup
7. How Git stores data?
• most other systems store information as a
list of file-based changes
• Git thinks of its data more like a set of
snapshots of a miniature filesystem
• Every time you commit, or save the state of
your project in Git
• Git thinks about its data more like a stream
of snapshots.
• Git tracks files not folders
8. The Three
States
states of files
committed
stored in local
repo
modified
changed but not
committed
staged
marked to go
into next commit
10. Hands-on exercise
1. Install Git on Windows
◦ http://git-scm.com
◦ Download and run installer
2. Install Git on Mac
◦ Type in terminal: git version
3. Configure Git
◦ git config –-global user.name “Your Name”
◦ git config --global user.email “your.email@sephora.com”
4. Create local repository
◦ git init
11. The Basics
→ Open terminal
→ Create a location for the lab
mkdir projects
cd projects
→ Create a repository
git init git-101
ls –al
cd git-101
cd .git
12. Commit
git status
Create a file README.md
touch README.md
git add README.md
git commit –m “My first commit”
git log
git show
Modify README.md
git status
git commit –am “My second
commit”
git log
13. Backing out changes
Modify README.md
git status
git add .
How to unstage changes?
git reset HEAD README.md
git status
How to revert changes entirely?
git checkout -- README.md
14. Rename and remove a file
Create a file example.txt
git status
git add example.txt
git commit -m "adding example file"
git mv example.txt demo.txt
ls
git status
git commit -m "renaming example”
git rm demo.txt
git commit -m ”removing demo”
The Linux kernel is an open source software project of fairly large scope.
For most of the lifetime of the Linux kernel maintenance (1991–2002), changes to the software were passed around as patches and archived files.
n 2002, the Linux kernel project began using a proprietary DVCS called BitKeeper.
In 2005 the Linux kernel community faced a daunting challenge: They could no longer use their revision control system BitKeeper and no other Source Control Management (SCMs) met their needs for a distributed system. Linus Torvalds, the creator of Linux, took the challenge into his own hands and disappeared over the weekend to emerge the following week with Git. Today Git is used for thousands of projects and has ushered in a new level of social coding among programmers.
https://www.linux.com/blog/10-years-git-interview-git-creator-linus-torvalds
Central:
The limitations here are that you always need to have the latest code on your local repository, and to see the history of changes you will need to ask the server for that information.
You also always need to be able to access the remote repository to commit
Distributed:
Instead of just having one central repository that you send changes to, every committer has their own repository that has the entire commit history of the project. You don't need to connect to a remote repository, the change is just recorded on your local repository. You can still push to a centralised repository but you don't need to.
One big benefit of this is that you can start a repository at any time on your local computer.
Another big benefit (perhaps less so with cloud computing now) is redundancy. If one copy of the repository is lost for whatever reason, any of the other repositories will contain the complete history so you could only potentially lose any work since your last push.
https://git-scm.com/book/en/v2/Getting-Started-Git-Basics
This is an important distinction between Git and nearly all other VCSs. It makes Git reconsider almost every aspect of version control that most other systems copied from the previous generation. This makes Git more like a mini filesystem with some incredibly powerful tools built on top of it, rather than simply a VCS.
Committed means that the data is safely stored in your local database.
Modified means that you have changed the file but have not committed it to your database yet.
Staged means that you have marked a modified file in its current version to go into your next commit snapshot.
The Git directory is where Git stores the metadata and object database for your project. This is the most important part of Git, and it is what is copied when you clone a repository from another computer.
The working tree is a single checkout of one version of the project. These files are pulled out of the compressed database in the Git directory and placed on disk for you to use or modify.
The staging area is a file, generally contained in your Git directory, that stores information about what will go into your next commit. It’s sometimes referred to as the “index”, but it’s also common to refer to it as the staging area.