Git presentation to some coworkers some time agoRodrigo Urubatan
Git is a distributed version control system created by Linus Torvalds in 2005 to be very fast, support branching and merging easily, and handle Git's workflow of distributed development across multiple repositories. Some key advantages of Git include not requiring a central repository, speed, easy branching and merging, and increased collaboration. However, adoption of Git also presents challenges like learning new concepts and tools, lack of good GUIs, and incompatibility with some SVN workflows.
The Basics of Open Source Collaboration With Git and GitHubBigBlueHat
A revised/minimized version of Nick Quaranto's (http://www.slideshare.net/qrush ) presentation on the same topic. This revised version was used to present Git to a group of students at ECPI who were not yet familiar with the concepts of version control or Git.
This document provides an overview of version control with Git. It explains what version control and Git are, how to install and configure Git, how to perform basic tasks like initializing a repository and making commits, and how to collaborate using features like branching and pushing/pulling from remote repositories. Key points covered include allowing the tracking of changes, maintaining file history, and enabling multiple people to work on the same project simultaneously without conflicts.
This document provides an introduction and overview of Git. It begins with a brief history of Git's origins with Linux source code management. It then covers key Git concepts like its distributed version control model, advantages like speed and resilience, and some basic commands. The document demonstrates setting up a sample Git repository and making commits. It also discusses branching, tagging, undoing changes, cleaning up repositories, and using remote repositories.
Git 101 - Crash Course in Version Control using GitGeoff Hoffman
Find out why more and more developers are switching to Git - distributed version control. This intro to Git covers the basics, from cloning to pushing for beginners.
This document provides an overview of important Git commands and concepts:
- It lists common Git commands like commit, diff, branch, merge, log and config along with explanations of staging areas and repositories.
- Key concepts discussed include commits, blobs, branches and how to start a new Git repository or clone an existing one from services like GitHub.
- Guidance is provided on branching, merging, ignoring files and viewing commit histories.
The Information Technology have led us into an era where the production, sharing and use of information are now part of everyday life and of which we are often unaware actors almost: it is now almost inevitable not leave a digital trail of many of the actions we do every day; for example, by digital content such as photos, videos, blog posts and everything that revolves around the social networks (Facebook and Twitter in particular). Added to this is that with the "internet of things", we see an increase in devices such as watches, bracelets, thermostats and many other items that are able to connect to the network and therefore generate large data streams. This explosion of data justifies the birth, in the world of the term Big Data: it indicates the data produced in large quantities, with remarkable speed and in different formats, which requires processing technologies and resources that go far beyond the conventional systems management and storage of data. It is immediately clear that, 1) models of data storage based on the relational model, and 2) processing systems based on stored procedures and computations on grids are not applicable in these contexts. As regards the point 1, the RDBMS, widely used for a great variety of applications, have some problems when the amount of data grows beyond certain limits. The scalability and cost of implementation are only a part of the disadvantages: very often, in fact, when there is opposite to the management of big data, also the variability, or the lack of a fixed structure, represents a significant problem. This has given a boost to the development of the NoSQL database. The website NoSQL Databases defines NoSQL databases such as "Next Generation Databases mostly addressing some of the points: being non-relational, distributed, open source and horizontally scalable." These databases are: distributed, open source, scalable horizontally, without a predetermined pattern (key-value, column-oriented, document-based and graph-based), easily replicable, devoid of the ACID and can handle large amounts of data. These databases are integrated or integrated with processing tools based on the MapReduce paradigm proposed by Google in 2009. MapReduce with the open source Hadoop framework represent the new model for distributed processing of large amounts of data that goes to supplant techniques based on stored procedures and computational grids (step 2). The relational model taught courses in basic database design, has many limitations compared to the demands posed by new applications based on Big Data and NoSQL databases that use to store data and MapReduce to process large amounts of data.
Course Website http://pbdmng.datatoknowledge.it/
Contact me to download the slides
tech winter break workshop on git &git hub.pptxashishraulin
hands-on workshop to learn the fundamentals of Git and GitHub, including version control, collaboration, and best practices for managing your code. Whether you're a beginner or looking to enhance your skills, this session is perfect for developers of all levels.
Your ticket gives you access to virtual event venues.
Two days git training with labs
First day covers git basis and essential commands
Second day covers git additional command with a big lab using a git workflow
Git is a version control system that allows developers to track changes to files over time. It is distributed, meaning developers have their own local copy of the code repository. This allows working offline and merging changes. Common Git commands include git add to stage changes, git commit to save changes locally, and git push to upload changes to the remote repository. Tagging specific versions with git tag allows easy deployment of code.
Slides from my talk at ALT.NET Cork.
Unlike centralized version control systems, the distributed nature of Git allows you to be far more flexible in how developers collaborate on projects.In this session I'll take you through a quick tour of the essential git commands with some demos.We'll cover branching and merging strategies, pull requests ,working on open source (GitHub etc), git clients and git deployments to the cloud.
Git is a version control system that was created by Linus Torvalds in 2005 to facilitate distributed development of Linux. The document outlines the contents of 4 sessions on Git that cover topics such as why version control is useful, distributed version control systems, installing and configuring Git, basic and advanced Git commands, collaboration workflows, and migrating from other version control systems to Git. Hands-on exercises are included to reinforce key concepts.
This document provides an outline for a course on learning Git version control. The course covers getting Git setup, the basic concepts and workflow of Git, branching and merging, resolving conflicts, working with remote repositories, and various Git commands. The document lists several modules that will be covered, including getting started, everyday Git usage, branching, merging and rebasing, additional tools and concepts, and advice on applying the skills learned. The goal is to teach participants how to install and use Git for version control on individual, local, and distributed projects.
The document provides an overview of version control systems and introduces Git and GitHub. It discusses the differences between centralized and distributed version control. It then covers the basics of using Git locally including initialization, staging files, committing changes, branching and merging. Finally, it demonstrates some common remote operations with GitHub such as pushing, pulling and tagging releases.
Git is a version control system that records changes to files over time by taking snapshots of the file system. It works by storing file changes as a set of snapshots rather than tracking file differences. This allows it to efficiently store unchanged files as links instead of re-storing the file. Some key Git concepts include cloning repositories, staging files, committing snapshots, pushing changes to remote repositories, branching to work on different versions, and stashing uncommitted changes. Submodules allow including other repositories within a repository.
Git is a distributed version control system that was created by Linus Torvalds in 2005 to manage the Linux kernel source code. It allows developers to work simultaneously and maintain a complete history of their work. Git uses a distributed model where every developer has a full copy of the code repository, enabling them to work offline and collaborate asynchronously by integrating changes from any repository. Developers commit changes to their local repository and synchronize changes by pushing to or pulling from remote repositories.
This document provides an overview of installing Git and creating a GitHub account, as well as explaining some key concepts about version control with Git and GitHub. It discusses installing Git on Linux, Mac and Windows systems, creating a GitHub account, and what Git and GitHub are. Key Git concepts explained include snapshots, commits, repositories, branches, merging, and what a HEAD means in Git. GitHub is described as a website that hosts Git repositories and adds extra functionality for code collaboration.
This document provides a summary of a mini Git tutorial. It begins with an introduction to version control systems and how they allow users to track changes, revert files, and recover from errors. It then explains the basics of Git, including its three main states (committed, modified, staged), how it stores content addressed by SHA-1 hashes, and the local workflow of modifying, staging, and committing files. The document proceeds to cover installing Git, basic configuration, cloning repositories, recording changes, undoing actions, and working with remote repositories hosted online. It concludes by mentioning how Git stores data as commit snapshots and uses branches to track parallel development lines.
This document provides an overview of version control systems and introduces the key concepts and commands of Git. It explains why version control is useful, the differences between local, centralized, and distributed version control systems, and the goals and design of Git. It covers the basic Git workflow, tracking and committing files, viewing history, branching and merging, and working with remote repositories. It also discusses rebasing and interactive rebasing to clean up commits, as well as stashing to temporarily store uncommitted changes.
This document provides an overview of Git workflow and commands. It describes Git as a distributed version control system designed for tracking changes in software code during development. The document outlines common Git commands and how developers can use branching and merging to work on features independently and integrate their work.
Learn Git - For Beginners and Intermediate levelsGorav Singal
Learn Git Basics and Fundamentals.
This is a perfect start for beginners and at Intermediate levels.
This contains a few commands and fundamentals about Git. Topics ranging from basic commands to creating branches, stashes. How to revert your code, how to tag your releases.
It also covers a few branching strategies.
Tutorial on Version control system using git and github.
To learn more and to download printable cheet sheets please visit my website www.techoalien.com.
Also like us on facebook https://www.facebook.com/techoalien
tech winter break workshop on git &git hub.pptxashishraulin
hands-on workshop to learn the fundamentals of Git and GitHub, including version control, collaboration, and best practices for managing your code. Whether you're a beginner or looking to enhance your skills, this session is perfect for developers of all levels.
Your ticket gives you access to virtual event venues.
Two days git training with labs
First day covers git basis and essential commands
Second day covers git additional command with a big lab using a git workflow
Git is a version control system that allows developers to track changes to files over time. It is distributed, meaning developers have their own local copy of the code repository. This allows working offline and merging changes. Common Git commands include git add to stage changes, git commit to save changes locally, and git push to upload changes to the remote repository. Tagging specific versions with git tag allows easy deployment of code.
Slides from my talk at ALT.NET Cork.
Unlike centralized version control systems, the distributed nature of Git allows you to be far more flexible in how developers collaborate on projects.In this session I'll take you through a quick tour of the essential git commands with some demos.We'll cover branching and merging strategies, pull requests ,working on open source (GitHub etc), git clients and git deployments to the cloud.
Git is a version control system that was created by Linus Torvalds in 2005 to facilitate distributed development of Linux. The document outlines the contents of 4 sessions on Git that cover topics such as why version control is useful, distributed version control systems, installing and configuring Git, basic and advanced Git commands, collaboration workflows, and migrating from other version control systems to Git. Hands-on exercises are included to reinforce key concepts.
This document provides an outline for a course on learning Git version control. The course covers getting Git setup, the basic concepts and workflow of Git, branching and merging, resolving conflicts, working with remote repositories, and various Git commands. The document lists several modules that will be covered, including getting started, everyday Git usage, branching, merging and rebasing, additional tools and concepts, and advice on applying the skills learned. The goal is to teach participants how to install and use Git for version control on individual, local, and distributed projects.
The document provides an overview of version control systems and introduces Git and GitHub. It discusses the differences between centralized and distributed version control. It then covers the basics of using Git locally including initialization, staging files, committing changes, branching and merging. Finally, it demonstrates some common remote operations with GitHub such as pushing, pulling and tagging releases.
Git is a version control system that records changes to files over time by taking snapshots of the file system. It works by storing file changes as a set of snapshots rather than tracking file differences. This allows it to efficiently store unchanged files as links instead of re-storing the file. Some key Git concepts include cloning repositories, staging files, committing snapshots, pushing changes to remote repositories, branching to work on different versions, and stashing uncommitted changes. Submodules allow including other repositories within a repository.
Git is a distributed version control system that was created by Linus Torvalds in 2005 to manage the Linux kernel source code. It allows developers to work simultaneously and maintain a complete history of their work. Git uses a distributed model where every developer has a full copy of the code repository, enabling them to work offline and collaborate asynchronously by integrating changes from any repository. Developers commit changes to their local repository and synchronize changes by pushing to or pulling from remote repositories.
This document provides an overview of installing Git and creating a GitHub account, as well as explaining some key concepts about version control with Git and GitHub. It discusses installing Git on Linux, Mac and Windows systems, creating a GitHub account, and what Git and GitHub are. Key Git concepts explained include snapshots, commits, repositories, branches, merging, and what a HEAD means in Git. GitHub is described as a website that hosts Git repositories and adds extra functionality for code collaboration.
This document provides a summary of a mini Git tutorial. It begins with an introduction to version control systems and how they allow users to track changes, revert files, and recover from errors. It then explains the basics of Git, including its three main states (committed, modified, staged), how it stores content addressed by SHA-1 hashes, and the local workflow of modifying, staging, and committing files. The document proceeds to cover installing Git, basic configuration, cloning repositories, recording changes, undoing actions, and working with remote repositories hosted online. It concludes by mentioning how Git stores data as commit snapshots and uses branches to track parallel development lines.
This document provides an overview of version control systems and introduces the key concepts and commands of Git. It explains why version control is useful, the differences between local, centralized, and distributed version control systems, and the goals and design of Git. It covers the basic Git workflow, tracking and committing files, viewing history, branching and merging, and working with remote repositories. It also discusses rebasing and interactive rebasing to clean up commits, as well as stashing to temporarily store uncommitted changes.
This document provides an overview of Git workflow and commands. It describes Git as a distributed version control system designed for tracking changes in software code during development. The document outlines common Git commands and how developers can use branching and merging to work on features independently and integrate their work.
Learn Git - For Beginners and Intermediate levelsGorav Singal
Learn Git Basics and Fundamentals.
This is a perfect start for beginners and at Intermediate levels.
This contains a few commands and fundamentals about Git. Topics ranging from basic commands to creating branches, stashes. How to revert your code, how to tag your releases.
It also covers a few branching strategies.
Tutorial on Version control system using git and github.
To learn more and to download printable cheet sheets please visit my website www.techoalien.com.
Also like us on facebook https://www.facebook.com/techoalien
jquery summit presentation for large scale javascript applicationsDivyanshGupta922023
The document discusses different patterns for organizing JavaScript applications, including the module pattern and MVC frameworks. It provides examples of implementing the module pattern in jQuery, Dojo, YUI, and ExtJS. It also covers MVC frameworks like Backbone.js, AngularJS, and Ember and discusses how to convert existing code to an MVC structure.
Next.js helps address some shortcomings of React like initial load time and SEO support. It introduces features like server-side rendering, static generation, and incremental static regeneration that improve performance. The new App Router in Next.js 13.4 introduces shared layouts and nested routing to provide a more structured approach to building apps. React Server Components in Next.js also improve performance by enabling server-centric routing and caching of component trees.
Nestlé has a strong and experienced global leadership team. The team includes Paul Bulcke as Chairman, who has worked at Nestlé since 1979. Mark Schneider has served as CEO since 2017, bringing experience from Fresenius Group. Other senior leaders head major regions, including Laurent Freixe for the Americas, Wan Ling Martello for Asia and Africa, and Marco Settembri for Europe. All have extensive international experience in senior management roles.
- Recent advancements in statistical analysis of microbial metagenomic sequence data include improved OTU clustering algorithms like ASVs that provide single nucleotide resolution, and log-ratio methodology to analyze compositional microbiome data by removing the compositional constraint.
- 16S amplicon sequencing provides information on relative abundance but is subject to biases from copy number variation and primer mismatches. Shallow shotgun metagenomics is a potential alternative.
- Microbiome data are compositional and violate assumptions of standard statistical tests. The CoDA framework applies log-ratio transformations and appropriate statistical methods to account for this compositionality.
Developer burnout is sneaky and can slowly grind at the developer until constant fatigue and lack of motivation become normal. Key signs include realizing you've been doing the same thing for years without enjoyment. Success in open source can lead to taking on too many projects and goals without delegation. To avoid burnout, developers should be gentle with themselves, publish less to communities while still influencing them, delegate tasks, pursue other interests and hobbies, and take breaks if needed. Selectively engaging with others on social media can also help prevent burnout.
El documento describe los conceptos clave de la computación en la nube, incluyendo infraestructura como servicio (IaaS), plataforma como servicio (PaaS) y software como servicio (SaaS). También discute la escalabilidad, los modelos de implementación pública, privada e híbrida, y ejemplos de proveedores de servicios en la nube como Microsoft Azure, AWS y Google App Engine.
This document discusses API driven development and building APIs for humans. It recommends following three steps: 1) Have a real problem to solve, like difficulty using OneNote across platforms. 2) Respond by writing documentation like a README before writing code. 3) Build the API by writing code to implement what was documented. It also recommends building APIs openly on GitHub so components separate concerns and best practices emerge through community feedback.
The Internet of Things (IoT) allows physical objects to be connected to the internet through sensors and software. This enables the objects to exchange data between each other and other connected devices using existing network infrastructure. Each object can be uniquely identified and can interoperate within the existing internet. The IoT creates opportunities to remotely sense and control objects, improving efficiency and integrating the physical world with computer systems.
This document discusses JavaScript functions, arrays, objects, and classes. It shows examples of functions being first-class citizens that can be passed as arguments to other functions. Examples demonstrate using array methods like map, filter, and reduce to transform and extract data from arrays. Objects are manipulated using property accessors, and classes are defined with inheritance. Various syntax features are presented like let, const, arrow functions, destructuring, and modules.
This document summarizes Terrance Boult's talk on open world recognition and learning with unknown inputs. It discusses how traditional machine learning assumes all classes are known, but in reality there are many "unknown unknowns" that models are not trained on. It reviews different levels of openness in problems from closed multi-class classification to open set recognition. It also summarizes different algorithms that can help with open set recognition, like SVDD and openmax, and discusses challenges in applying these techniques to deep networks. The talk concludes that we cannot anticipate all unknown inputs and that open set recognition is an important area for further research.
Vulnerabilities are weaknesses that can allow attackers to compromise a system through bad code, design errors, or programming mistakes, while exploits are code that takes advantage of vulnerabilities. Zero-day vulnerabilities are the most dangerous as they are new and unfixed, whereas known vulnerabilities are tracked through the CVE system. Attack surfaces are all possible entry points like vulnerabilities that attackers can use to access a system, so the principle of least privilege should be followed to minimize access and resources for users and applications.
This document provides an introduction to using directed acyclic graphs (DAGs) for confounder selection in nonexperimental studies. It discusses what DAGs are, their benefits over traditional covariate selection approaches, limitations, key terminology, and examples of how DAGs can identify when adjustment is needed or could induce bias. The document also introduces d-separation criteria for assessing open and closed paths in DAGs and overviews software tools for applying these rules to select minimum adjustment sets from complex causal diagrams.
React JS is a JavaScript library for building user interfaces. It uses virtual DOM and one-way data binding to render components efficiently. Everything in React is a component - they accept custom inputs called props and control the output display through rendering. Components can manage private state and update due to props or state changes. The lifecycle of a React component involves initialization, updating due to state/prop changes, and unmounting from the DOM. React promotes unidirectional data flow and single source of truth to make views more predictable and easier to debug.
Next.js introduces a new App Directory structure that routes pages based on files, separates components by whether data is fetched on the server or client, and introduces a new way to fetch data using React Suspense. It also supports server-side rendering, static site generation, incremental static regeneration, internationalization, theming, accessibility and alternative patterns to Context API.
ICSE 2025 Keynote: Software Sustainability and its Engineering: How far have ...patricialago3459
Thanks to its digital transformation, society depends on software. This is expected to bring important benefits but at the same time is accompanied by worrisome constraints. The societal role of software and its engineering is not new. Nor is their need to be sustainable. But what does it mean, really? And how far have we come with our research?
This talk wants to trigger reflection on the research being done, its impact and its true contribution to the complex and urgent problems posed by both society and our planet.
step-by-step setup of the OutSystems Cloud Connector, demonstrating how to establish secure connections with on-premises databases, APIs, and other private endpoints. Whether you are working with legacy systems, enterprise data, or restricted internal services, this session will equip you with the knowledge and best practices to seamlessly integrate them with your cloud applications.
2025-05-04 A New Day Dawns 03 (shared slides).pptxDale Wells
Lesson 3 of 6 in a Heritage Bible Master Class study of "A New Day Dawns"
Heritage Bible Master Class meets every Sunday morning at 10:15 at the Heritage Palms Country Club, on the south side of Fred Waring, just east of Jefferson, in Indio, California. Please come check us out!
The Business Dynamics of Quick Commerce.pdfRDinuRao
This research explores the transformative rise of Quick Commerce (Q-Commerce)—an advanced evolution of e-commerce that emphasizes ultra-fast delivery, typically within 15–30 minutes, using hyperlocal micro-fulfillment centers. With the rapid pace of urbanization and digitalization, Q-commerce is reshaping consumer expectations, retail strategies, and supply chain models.The seminar Presentation Report has been completed by me under the guidance of Dr. Varun Agarwal. The report investigates the pivotal components of this disruption across marketing, operations, sustainability, and long-term viability.
The study begins with a deep dive into consumer psychology, applying theories like Impulse Buying (Stern, 1962) and Maslow’s Hierarchy of Needs, highlighting how digital platforms exploit impulse-driven purchasing. Supported by Ajzen’s Theory of Planned Behavior, the research explains how attitudes, social norms, and perceived control influence the purchasing decisions in a fast-paced retail setting.
A core component of the research is marketing strategy. Q-commerce companies deploy AI-driven personalization, geo-targeting, influencer marketing, and loyalty programs to attract and retain customers. For instance, influencer-driven campaigns achieve conversion rates of up to 65%, showcasing their significance in a digital-first market.
Using secondary data from McKinsey, Deloitte, KPMG, Statista, and HBR, the paper presents compelling figures—Q-commerce grew from $0.5 billion in 2022 to $5.5 billion in 2025, with projections reaching $9.95 billion by 2029. The average order value has doubled, while CAGR stands at 4.5%, signifying rapid adoption. Despite the meteoric growth, the study critically assesses challenges to profitability, such as steep operational costs, steep discounts, and last-mile delivery expenses.
A comparative analysis of platforms—Blinkit, Swiggy Instamart, Zepto, BigBasket, and JioMart—reveals how market leaders differentiate through delivery speed, inventory accuracy, app integrations, and urban focus. Moreover, the research stresses the environmental and labor challenges that must be addressed—like packaging waste, carbon emissions, and gig worker instability.
The discussion extends into how Q-commerce forces traditional retailers to adapt, investing in EV logistics, dark stores, and sustainability measures. It underscores the AI-led shift in consumer behavior, and the need for balanced growth that prioritizes environmental responsibility and ethical labor practices.
In conclusion, the paper recommends a future roadmap for Q-commerce: promoting eco-friendly logistics, subscription models, fair employment, and policy alignment. It calls for future research to explore Tier-2 and Tier-3 city expansion and to craft long-term profitability frameworks. Ultimately, this study positions Q-commerce not just as a convenience, but as a catalyst for redefining urban retail economics and digital lifestyle
Inside, you’ll find practical, easy-to-implement strategies that uncover hidden profit opportunities in your daily operations—strategies that drive real growth without added risk.
If you're working harder than ever but not seeing the results you expect, this short read could be the reset your business needs.
2025-04-27 A New Day Dawns 02 (shared slides).pptxDale Wells
Lesson 2 of 6 in a Heritage Bible Class study of "A New Day Dawns."
Heritage Bible Master Class meets every Sunday morning at 10:15 in the Administration Building of Heritage Palms Country Club, on the south side of Fred Waring, just east of Jefferson St. in Indio, CA.
Microsoft Azure Data Fundamentals (DP-900) Exam Dumps & Questions 2025.pdfMinniePfeiffer
• For a full set of 640 questions. Go to
https://skillcertpro.com/product/microsoft-azure-data-fundamentals-dp-900-exam-questions/
• SkillCertPro offers detailed explanations to each question which helps to understand the concepts better.
• It is recommended to score above 85% in SkillCertPro exams before attempting a real exam.
• SkillCertPro updates exam questions every 2 weeks.
• You will get life time access and life time free updates
• SkillCertPro assures 100% pass guarantee in first attempt.
Speech 3-A Vision for Tomorrow for GE2025Noraini Yunus
This SlideShare presentation explores critical choices ahead for Singapore as GE2025 approaches. It highlights the Singapore United Party's manifesto—a roadmap to balance innovation with sustainability, compassion with ambition, and inclusivity with excellence. Through affordable housing, equitable education, and accessible healthcare, Noraini Bte Yunus champions a thriving society. This inspiring message invites Singaporeans to unite, rise above challenges, and build a resilient, forward-looking nation. Together, we can turn aspirations into reality. Moving Forward, Together!
2. Outline
• History of Git
• Distributed V.S Centralized Version Control
• Getting started
• Branching and Merging
• Working with remote
• Summary
2
3. A Brief History of Git
• Linus uses BitKeeper to manage Linux code
• Ran into BitKeeper licensing issue
– Liked functionality
– Looked at CVS as how not to do things
• April 5, 2005 - Linus sends out email showing first
version
• June 15, 2005 - Git used for Linux version control
3
4. Git is Not an SCM
Never mind merging. It's not an SCM, it's a
distribution and archival mechanism. I bet you
could make a reasonable SCM on top of it,
though. Another way of looking at it is to say
that it's really a content-addressable
filesystem, used to track directory trees.
Linus Torvalds, 7 Apr 2005
http://lkml.org/lkml/2005/4/8/9
4
5. Centralized Version Control
• Traditional version control system
– Server with database
– Clients have a working version
• Examples
– CVS
– Subversion
– Visual Source Safe
• Challenges
– Multi-developer conflicts
– Client/server communication
5
6. Distributed Version Control
• Authoritative server by
convention only
• Every working checkout
is a repository
• Get version control
even when detached
• Backups are trivial
• Other distributed
systems include
– Mercurial
– BitKeeper
– Darcs
– Bazaar
6
11. Git Advantages
• Resilience
– No one repository has more data than any other
• Speed
– Very fast operations compared to other VCS (I’m looking at you CVS
and Subversion)
• Space
– Compression can be done across repository not just per file
– Minimizes local size as well as push/pull data transfers
• Simplicity
– Object model is very simple
• Large userbase with robust tools
11
12. Some GIT Disadvantages
• Definite learning curve, especially for those used to
centralized systems
– Can sometimes seem overwhelming to learn
• Conceptual difference
• Huge amount of commends
12
14. Getting Started
• Three trees of Git
– The HEAD
• last commit snapshot, next parent
– Index
• Proposed next commit snapshot
– Working directory
• Sandbox
14
15. Getting Started
• A basic workflow
– (Possible init or clone) Init a repo
– Edit files
– Stage the changes
– Review your changes
– Commit the changes
15
17. Getting Started
• A basic workflow
– Edit files
– Stage the changes
– Review your changes
– Commit the changes
• Use your favorite editor
17
18. Getting Started
• A basic workflow
– Edit files
– Stage the changes
– Review your changes
– Commit the changes
• Git add filename
zachary@zachary-desktop:~/code/gitdemo$ git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: hello.txt
#
no changes added to commit (use "git add" and/or "git commit -a")
18
19. Getting Started
• A basic workflow
– Edit files
– Stage the changes
– Review your changes
– Commit the changes
• Git status
zachary@zachary-desktop:~/code/gitdemo$ git add hello.txt
zachary@zachary-desktop:~/code/gitdemo$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: hello.txt
#
19
20. Getting Started
• A basic workflow
– Edit files
– Stage the changes
– Review your changes
– Commit the changes
• Git commit
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: hello.txt
#
20
21. Getting Started
• A basic workflow
– Edit files
– Stage the changes
– Review your changes
– Commit the changes
21
22. Getting Started
• View changes
• Git diff
– Show the difference
between working
directory and staged
• Git diff --cached
– Show the difference
between staged and the
HEAD
• View history
• Git log
zachary@zachary-desktop:~/code/gitdemo$ git log
commit efb3aeae66029474e28273536a8f52969d705d04
Author: Zachary Ling <[email protected]>
Date: Sun Aug 28 15:02:08 2011 +0800
Add second line
commit 453914143eae3fc5a57b9504343e2595365a7357
Author: Zachary Ling <[email protected]>
Date: Sun Aug 28 14:59:13 2011 +0800
Initial commit
22
23. Getting Started
• Revert changes (Get back to a previous version)
– Git checkout commit_hash
zachary@zachary-desktop:~/code/gitdemo$ git log
commit efb3aeae66029474e28273536a8f52969d705d04
Author: Zachary Ling <[email protected]>
Date: Sun Aug 28 15:02:08 2011 +0800
Add second line
commit 453914143eae3fc5a57b9504343e2595365a7357
Author: Zachary Ling <[email protected]>
Date: Sun Aug 28 14:59:13 2011 +0800
Initial commit
zachary@zachary-desktop:~/code/gitdemo$ git checkout 4539
Note: checking out '4539'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b new_branch_name
HEAD is now at 4539141... Initial commit
23
24. Branching
• Git sees commit this way…
• Branch annotates which commit we are
working on
24
42. Branching and Merging
• Why this is cool?
– Non-linear development
clone the code that is in production
create a branch for issue #53 (iss53)
work for 10 minutes
someone asks for a hotfix for issue #102
checkout ‘production’
create a branch (iss102)
fix the issue
checkout ‘production’, merge ‘iss102’
push ‘production’
checkout ‘iss53’ and keep working
42
43. Working with remote
• Use git clone to replicate
repository
• Get changes with
– git fetch
– git pull (fetches and merges)
• Propagate changes with
– git push
• Protocols
– Local filesystem (file://)
– SSH (ssh://)
– HTTP (http:// https://)
– Git protocol (git://)
43
44. Working with remote
Local filesystem
• Pros
– Simple
– Support existing access
control
– NFS enabled
• Cons
– Public share is difficult to
set up
– Slow on top of NFS
44
45. Working with remote
SSH
• Pros
– Support authenticated
write access
– Easy to set up as most
system provide ssh
toolsets
– Fast
• Compression before
transfer
• Cons
– No anonymous access
• Not even for read access
45
46. Working with remote
GIT
• Pros
– Fastest protocal
– Allow public anonymous
access
• Cons
– Lack of authentication
– Difficult to set up
– Use port 9418
• Not standard port
• Can be blocked
46
47. Working with remote
HTTP/HTTPS
• Pros
– Very easy to set up
– Unlikely to be blocked
• Using standard port
• Cons
– Inefficient
47
48. Working with remote
• One person project
– Local repo is enough
– No need to bother with
remote
• Small team project
– SSH write access for a
few core developers
– GIT public read access
48
49. Working with remote
• Use git remote add to add an remote
repository
Git remote add origin [email protected]:FreezingGod/vimcfg.git
zachary@zachary-desktop:~/.vim_runtime$ git remote
origin
49
50. Working with remote
• Remote branching
– Branch on remote are different from local branch
50
51. Working with remote
• Remote branching
– Branch on remote are
different from local
branch
– Git fetch origin to get
remote changes
– Git pull origin try to fetch
reomte changes and
merge it onto current
branch
51
52. Working with remote
• Git push remote_name branch_name
– Share your work done on branch_name to remote
remote_name
52
53. Summary
• We covered fundamentals of Git
– Three trees of git
• HEAD, INDEX and working directory
– Basic work flow
• Modify, stage and commit cycle
– Branching and merging
• Branch and merge
– Remote
• Add remote, push, pull, fetch
– Other commands
• Revert change, history view
53
54. Summary
• However, this is by no means a complete portray
of git, some advanced topics are skipped:
– Rebasing
– Commit amend
– Distributed workflow
• For more information, consult
– Official document
– Pro Git
• Free book available at http://progit.org/book/
54
56. References
• Some of the slides are adopted from
“Introduction to Git” available at
http://innovationontherun.com/presentation-
files/Introduction%20To%20GIT.ppt
• Some of the figure are adopted from Pro GIT by
Chacon, which is available at
http://progit.org/book/
• Some of the slides are adopted from “Git 101”
available at
http://assets.en.oreilly.com/1/event/45/Git%201
01%20Tutorial%20Presentation.pdf
56