So with this article, I wanted to give you the information that helped me understand what git is, what it can do, and the commands that I find to be the most helpful when working in a git repository
Let’s begin!
Version
control is a component of software configuration management, version control,
also known as revision control or source control. Version control systems are a
category of software tools that help a software team manage changes to source
code over time. Version control software keeps track of every modification to
the code in a special kind of database. If a mistake is made, developers can
turn back the clock and compare earlier versions of the code to help fix the
mistake while minimizing disruption to all team members. Version control helps
teams solve these kinds of problems, tracking every individual change by each
contributor and helping prevent concurrent work from conflicting.
Developing
software without using version control is risky, like not having backups.
Version control can also enable developers to move faster and it allows
software teams to preserve efficiency and agility as the team scales to include
more developers
Version
Control Systems (VCS) have seen great improvements over the past few decades
and some are better than others. VCS are sometimes known as SCM (Source Code
Management) tools or RCS (Revision Control System). One of the most popular VCS
tools in use today is called Git. Git is a Distributed VCS, a category known as
DVCS, more on that later. Like many of the most popular VCS systems available
today, Git is free and open source.
Collaboration
•With a VCS, everybody on the team is able to work
absolutely freely-on any file at anytime.
•The VCS will later allow you to merge all the changes
in to a common version. •Storing versions
properly.
•A version control
system acknowledges that there is only one project.
•Restoring previous
versions.
•Understanding
what happened.
•Every time you save
a new version of your project, your VCS requires you to provide a short description
of what was changed.
•Backup.
Many people’s version-control method of choice is to copy files into another directory. This approach is very common because it is so simple, but it is also incredibly error prone. It is easy to forget which directory you’re in and accidentally write to the wrong file or copy over files you don’t mean to.
To deal with this issue, programmers long ago developed local VCSs that had a simple database that kept all the changes to files under revision control.
Centralized Version Control Systems
To deal with this issue, programmers long ago developed local VCSs that had a simple database that kept all the changes to files under revision control.
Centralized Version Control Systems
The next major issue that people encounter is that they need to collaborate with developers on other systems. To deal with this problem, Centralized Version Control Systems (CVCSs) were developed. These systems (such as CVS, Subversion, and Perforce) have a single server that contains all the versioned files, and a number of clients that check out files from that central place. For many years, this has been the standard for version control.
•Distributed Version Control Systems
This is where Distributed Version Control Systems (DVCSs) step in. In a DVCS (such as Git, Mercurial, Bazaar or Darcs), clients don’t just check out the latest snapshot of the files; rather, they fully mirror the repository, including its full history. Thus, if any server dies, and these systems were collaborating via that server, any of the client repositories can be copied back up to the server to restore it. Every clone is really a full backup of all the data.
Git is
a distributed version control tool that can manage a development project's
source code history, while GitHub is a cloud based platform built around the
Git tool. Git is a tool a developer installs locally on their computer, while
GitHub is an online service that stores code pushed to it from computers
running the Git tool. The key difference between Git and GitHub is that Git is
an open-source tool developers install locally to manage source code, while
GitHub is an online service to which developers who use Git can connect and
upload or download resources.
One way to
examine the differences between GitHub and Git is to look at their competitors.
Git competes with centralized and distributed version control tools such as
Subversion, Mercurial, Clear Case and IBM's Rational Team Concert. On the other
hand, GitHub competes with cloud-based SaaS and PaaS offerings, such as GitLab
and Atlassian's Bitbucket.
Basically git commit "records changes to
the repository" while git push "updates remote refs along with
associated objects". So the first one is used in connection with your
local repository, while the latter one is used to interact with a remote
repository.
commit:
adding changes to the local repository
push: to
transfer the last commit(s) to a remote server
The
Staging Area:
The Staging
Area is when git starts tracking and saving changes that occur in files. These
saved changes reflect in the .git directory. That is about it when it comes to
the Staging Area. You tell git that I want to track these specific files, then
git says okay and moves them from you Working Tree to the Staging Area and says
“Cool, I know about this file in its entirety.” However, if you make any more
additional changes after adding a file to the Staging Area, git will not know
about those specific changes until you tell it to see them. You explicitly have
to tell git to notice the edits in your files.
How can you
see what is in your Staging Area? Run the command git status like before. It
will look something like the image below.
Collaborative
workflow is the convergence of social software with service management
(workflow) software. As the definition implies, collaborative workflow is
derived from both workflow software and social software such as chat, instant
messaging, and document collaboration.
To define
collaborative workflow, we can examine the definitions of its components:
workflow and collaboration objects.
Workflow
Workflow is
a set of activities (service requests, tasks) and the rules that govern their
behavior as they move from one service provider to the next until a project is
completed.
Collaboration
objects
Collaboration
objects include web-based meetings, instant messaging, knowledge management
wikis, documents (ECM), and shared calendars.
Goal
The goal of
collaborative workflow is to provide synergetic efficiency gains to its
constituents (social communication and service management) by:
Improving effectiveness on joint tasks by
removing the communication barriers between team members
Minimizing organizational boundaries and
information silos
Allowing online social interaction to be
goal oriented, structured, and measured
Ideally,
collaborative workflow is a collection of parallel and sequential tasks that
rely on communication and coordination to achieve a desired outcome.
Content
Delivery Networks (CDN) is a system of servers deployed in different
geographical locations to handle increased traffic loads and reduce the time of
content delivery for the user from servers. The main objective of CDN is to
deliver content at top speed to users in different geographic locations and
this is done by a process of replication. CDNs provide web content services by
duplicating content from other servers and directing it to users from the
nearest data center. The shortest possible route between a user and the web
server is determined by the CDN based on factors such as speed, latency,
proximity, availability and so on. CDNs are deployed in data centers to handle
challenges with user requests and content routing.
The
benefits of CDNs are
E-Commerce: E-commerce companies make use of
CDNs to improve their site performance and making their products available
online.
Media and
Advertising:
In media,
CDNs enhance the performance of streaming content to a large degree by
delivering latest content to end users quickly.
Business
Websites: CDNs accelerate the
interaction between users and websites, this acceleration is highly essential
for corporate businesses.
Education: In the area of online education CDNs offer
many advantages. Many educational institutes offer online courses that require
streaming video/audio lectures, presentations, images and distribution systems.
Differences Between CDNs and Web Hosting.
Web Hosting is used to host your website on a server and let users
access it over the internet. A content delivery network is about speeding up
the access/delivery of your website’s assets to those users.
Traditional web hosting would deliver 100%
of your content to the user. If they are located across the world, the user
still must wait for the data to be retrieved from where your web server is
located. A CDN takes a majority of your static and dynamic content and serves
it from across the globe, decreasing download times. Most times, the closer the
CDN server is to the web visitor, the faster assets will load for them.
Web Hosting normally refers to one server.
A content delivery network refers to a global network of edge servers which
distributes your content from a multi-host environment.
Virtualization
Station 1.x/2.x System Requirements
Processor that supports Intel VT-X ( More
information )
Minimum 2 GB Memory (NAS reserves 1.5 GB
Memory)
Minimum 4 GB Memory (NAS reserves 2 GB
Memory)
Minimum 550 MB Hard disk space
Minimum two Ethernet cables
Suitable
applications to install in a VM:
Need to run 24/7 but consume less hardware
resources (for example: where the average CPU usage rate is around 50%)
Applications that need routine access to
data/files on the Turbo NAS
Non-intensive graphic functions
Unsuitable applications
to install in VM:
Video editing software, e.g. Adobe Premiere
Elements, Cyber Link Power Director
Computer games or other
graphically-intensive software
Virtualization
has several benefits. For businesses with limited funds, virtualization helps
them stay on budget by eliminating the need
to invest in tons of hardware
pros:
Virtualization helps businesses reduce costs
in several ways, according to Mike Adams, senior director of cloud platform
product marketing at VMware.
Reduced IT
costs:
Capital expenditure savings
Operational expenditure savings
Data center and energy-efficiency
savings
Efficient
resource utilization.
Cons: The
upfront costs are hefty
Not all hardware or software can be visualized.
Understanding the Role of a Hypervisor
The
explanation of a hypervisor up to this point has been fairly simple: it is a
layer of software that sits between the hardware and the one or more virtual
machines that it supports. Its job is also fairly simple. The three
characteristics defined by Popek and Goldberg illustrate these tasks:
Provide an environment identical to the
physical environment
Provide that environment with minimal
performance cost
Retain complete control of the system
resources
For
many, emulation and virtualization go hand in hand, but there are actually some
really key differences. When a device is being emulated, a software-based
construct has replaced a hardware component. Its possible to run a complete
virtual machine on an emulated server. Both methods are used for various
purposes and are sometimes confused, so be aware of the differences.
Containers
and virtual machines are two ways to deploy multiple, isolated services on a
single platform.
The container’s system requires an
underlying operating system that provides the basic services to all of the
containerized applications using virtual-memory support for isolation. A
hypervisor, on the other hand, runs VMs that have their own operating system
using hardware VM support. Container systems have a lower overhead than VMs and
container systems typically target environments where thousands of containers
are in play. Container systems usually provide service isolation between
containers. As a result, container services such as file systems or network
support can have limited resource access.
Virtual-machine technology is
well-known in the embedded community, but containers tend to be the new kid on
the block, so they warrant a bit more coverage in this article. Containers have
been the rage on servers and the cloud, with companies like Facebook and Google
investing heavily in container technology. For example, each Google Docs
service gets a container per user instance.
A number of container technologies are
available, with Linux leading the charge. One of the more popular platforms is
Docker, which is now based on Linux libcontainer. Actually, Docker is a management system that’s
used to create, manage, and monitor Linux containers. Ansible is another
container-management system favored by Red Hat.








0 comments:
Post a Comment