Git And Github Version Control (Local And Remote Repository)

Topics

Following are the topics covered in this article.

Version Control

Version Control refers to a system that records changes to a file or set of files over time, called the ‘versions’. In other words, these versions help you in tracking the changes in your codes/project and if necessary, undo those changes as well.
There are three types of version control.
Local Version Controls
Version database or file is present on a local computer. Multiple people cannot work parallelly on the same project.
Git And Github Version Control (Local And Remote Repository)
Centralized Version Controls
In CVC, a central repository is maintained where all versions are kept and a user can check out and check-in files from their different computers at any time.
Git And Github Version Control (Local And Remote Repository)
The issue with CVC is that in case of central server failure, the whole system goes down. However, the solution is a distributed Version Control.
Distributed Version Controls
Version database or file is stored at every user’s local system and at remote servers. If any of the servers dies, a client-server user can be used to restore the data.
Git And Github Version Control (Local And Remote Repository)

Issues with software development without Version Control

  • Once saved, all the changes made in files are permanent and cannot revert back.
  • There is no record what was done and by whom.

GIT and GitHub

Git is a distributed version control software which you need to install on your local system in order to use it. For an individual working on a project alone, Git proves to be excellent software.
Git And Github Version Control (Local And Remote Repository)

Why is Git getting popular and why is it a clear winner?

The below listed are the advantages of using Git for version control.
Git And Github Version Control (Local And Remote Repository)
GitHub is a web-based Git version control repository hosting service. It provides all of the distributed version control and source code management (SCM) functionalities of Git.
GIT
GITHUB
Git And Github Version Control (Local And Remote Repository)

It is a software
Git And Github Version Control (Local And Remote Repository)

It is a service
It is installed locally on the system
It is hosted on Web
It is a tool to manage different versions of edits, made to files in a git repository
It is a space to upload a copy of the Git repository
It is a command-line tool
It provides a graphical interface
Git File Workflow
Git And Github Version Control (Local And Remote Repository)
Workspace Copy
Users' active directory simply creates new files in this space and this will be tracked by the Git.
Stage Area
It is a place where all the modified files marked to be committed are placed.
Local Repository
User’s copy of the version database or file and access all the files through local repos and push the change made to remote
Remote Repository
It is a server where all the collaborators upload changes made to files.
Clone Command
Creates a copy of an existing remote repository inside the local repository.
Commit Command
Commits all files from the staging area to local Repository
Push Command
Pushes all the changes made in local to Remote Repository
Fetch Command
Collects the changes from Remote Repository and copies them to Local Repository but doesn't affect our workspace
Pull Command
Collects the changes from Remote Repository and copies them to Local Repository along with merges to the current directory or our workspace
Git And Github Version Control (Local And Remote Repository)

Install Git on Windows

Following are the Git commands which are being covered.
git config
git init
git clone
git add
git commit
git diff
git reset
git status
git rm
git log
git show
git tag
git branch
git checkout
git merge
git remote
git push
git pull
git stash

Start a Local repository

git config

Usage: git config –global user.name “[name]”
Usage: git config –global user.email “[email address]”
This command sets the author name and email address respectively to be used with your commits.
Git And Github Version Control (Local And Remote Repository)
git init
Usage: git init [repository name]
This command is used to start a new repository.
Git And Github Version Control (Local And Remote Repository)
Create a sample text file on the said path -
Name: File.txt
The syntax for list of files in said path, run the below command
ls –a
Usage: ls –a
This command lists all the files from the branch.
Git And Github Version Control (Local And Remote Repository)
git clone
Usage: git clone [url]
This command is used to obtain a repository from an existing URL.
Git And Github Version Control (Local And Remote Repository)
Git And Github Version Control (Local And Remote Repository)
Git And Github Version Control (Local And Remote Repository)

Adding Files and Checking Status

To add a file to the staging area,
git add <filename>
git add File1.txt
Usage: git add *
This command adds one or more to the staging area.
To check the working tree status,
git status
Git And Github Version Control (Local And Remote Repository)
Commiting Changes
To commit the staged files to your local repository
git commit
Git And Github Version Control (Local And Remote Repository)
Staging and Committing Multiple Files
To stage and commit multiple files at once, use –a flag with the commit command,
git command –a – m “message”
Git And Github Version Control (Local And Remote Repository)
git diff
Usage: git diff
This command shows the file differences which are not yet staged.
Git And Github Version Control (Local And Remote Repository)
Usage: git diff –staged
This command shows the differences between the files in the staging area and the latest version present.
git reset
Usage: git reset [file]
This command unstages the file, but it preserves the file contents.
git rm
Usage: git rm [file]
This command deletes the file from your working directory and stages the deletion.
Git And Github Version Control (Local And Remote Repository)
git log
Usage: git log
This command is used to list the version history for the current branch.
Git And Github Version Control (Local And Remote Repository)
git show
Usage: git show [commit]
This command shows the metadata and content changes of the specified commit.
Git And Github Version Control (Local And Remote Repository)
git tag
Usage: git tag [commitID]
This command is used to give tags to the specified commit.
Usage: git branch [branch name]
This command creates a new branch.
Usage: git branch
This command lists all the local branches in the current repository.
Git And Github Version Control (Local And Remote Repository)
Usage: git branch -d [branch name]
This command deletes the feature branch.
Git And Github Version Control (Local And Remote Repository)
git checkout
Usage: git checkout [branch name]
This command is used to switch from one branch to another.
Git And Github Version Control (Local And Remote Repository)
Back to master,
Git And Github Version Control (Local And Remote Repository)
git merge
Usage: git merge [branch name]
This command merges the specified branch’s history into the current branch.
Git And Github Version Control (Local And Remote Repository)
git remote
Usage: git remote add [variable name] [Remote Server Link]
This command is used to connect your local repository to the remote server.
Git And Github Version Control (Local And Remote Repository)
git push
Usage: git push [variable name] master
This command sends the committed changes of the master branch to your remote repository
Git And Github Version Control (Local And Remote Repository)
Git And Github Version Control (Local And Remote Repository)
git pull
Usage: git pull [Repository Link]
This command fetches and merges changes on the remote server to your working directory.
Git And Github Version Control (Local And Remote Repository)
git stash
Usage: git stash save
This command temporarily stores all the modified tracked files.
Git ignored
This command which told Git has been explicitly told to ignore.
.gitignore files contain patterns that are matched against file names in your repository to determine whether or not they should be ignored.
Git And Github Version Control (Local And Remote Repository)

Creating a New Branch

Switching Branches

Git checkout <branchname>
Git And Github Version Control (Local And Remote Repository)
Merge Branch
git merge <branchname>
Git And Github Version Control (Local And Remote Repository)

GitHub

GitHub repository acts as your remote repository. It is a storage space where your project lives. We can keep code files, text files, images or any kind of a file in a repository.
GitHub repository is public which means that anyone can view the contents of this repository whereas in a private repository, you can choose who can view the content.
Also, private repository is a paid version. Also, if you refer the above screenshot, initialize the repository with a README file. This file contains the description of the file and once you check this box, this will be the first file inside your repository.
Git And Github Version Control (Local And Remote Repository)

Creating a GitHub Repository

Git And Github Version Control (Local And Remote Repository)
Git And Github Version Control (Local And Remote Repository)
To create a branch in GitHub, follow the below steps:

Git And Github Version Control (Local And Remote Repository)

Git And Github Version Control (Local And Remote Repository)

How to use GitHub - Operations

Commit Command

Git And Github Version Control (Local And Remote Repository)

Pull Command

To merge this, commit changes from sub-branch to master branch.
Git And Github Version Control (Local And Remote Repository)

Git And Github Version Control (Local And Remote Repository)

Click on create pull request button,
Git And Github Version Control (Local And Remote Repository)
Git And Github Version Control (Local And Remote Repository)
Git And Github Version Control (Local And Remote Repository)

Merge Command

Here comes the last command which merges the changes into the main master branch. We saw the changes in pink and green color.
Git And Github Version Control (Local And Remote Repository)
Git And Github Version Control (Local And Remote Repository)

Cloning and Forking GitHub Repository

We can directly copy the contents by cloning or downloading. Refer to the below screenshot for a better understanding.
Git And Github Version Control (Local And Remote Repository)

Forking

A fork is a copy of a repository. Forking a repository allows us to freely experiment with changes without affecting the original project.
Git And Github Version Control (Local And Remote Repository)
A fork can be done by others -
Git And Github Version Control (Local And Remote Repository)
Git And Github Version Control (Local And Remote Repository)
That’s all for this post, I hope you enjoyed it and got the solution for “how to use Git and GitHub”.