mirror of
https://github.com/linkedin/school-of-sre
synced 2026-01-17 05:58:02 +00:00
6476 lines
127 KiB
HTML
6476 lines
127 KiB
HTML
|
|
<!doctype html>
|
|
<html lang="en" class="no-js">
|
|
<head>
|
|
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
|
|
|
|
|
|
<link rel="canonical" href="https://linkedin.github.io/school-of-sre/level101/git/git-basics/">
|
|
|
|
|
|
<link rel="prev" href="../../linux_basics/conclusion/">
|
|
|
|
|
|
<link rel="next" href="../branches/">
|
|
|
|
|
|
<link rel="icon" href="../../../img/favicon.ico">
|
|
<meta name="generator" content="mkdocs-1.5.3, mkdocs-material-9.5.12">
|
|
|
|
|
|
|
|
<title>Git Basics - School Of SRE</title>
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="../../../assets/stylesheets/main.7e359304.min.css">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
|
|
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="../../../stylesheets/custom.css">
|
|
|
|
<script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</head>
|
|
|
|
|
|
<body dir="ltr">
|
|
|
|
|
|
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
|
|
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
|
|
<label class="md-overlay" for="__drawer"></label>
|
|
<div data-md-component="skip">
|
|
|
|
|
|
<a href="#git" class="md-skip">
|
|
Skip to content
|
|
</a>
|
|
|
|
</div>
|
|
<div data-md-component="announce">
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<script async defer data-domain="linkedin.github.io" src="https://tracking.eskratch.com/js/plausible.js"></script>
|
|
<script>document.addEventListener("DOMContentLoaded", function() {
|
|
if (document.getElementById("nav-2").checked!=true && document.getElementById("nav-3").checked!=true && window.innerWidth>1220){
|
|
document.getElementById("nav-2").checked=true;
|
|
document.getElementById("nav-3").checked=true;
|
|
|
|
}
|
|
});</script>
|
|
|
|
|
|
|
|
<header class="md-header" data-md-component="header">
|
|
<nav class="md-header__inner md-grid" aria-label="header.title">
|
|
<a href="https://linkedin.github.io/school-of-sre/" title="School Of SRE" class="md-header__button md-logo" aria-label="School Of SRE">
|
|
|
|
<img src="../../../img/sos.png" alt="logo">
|
|
|
|
</a>
|
|
<!-- Button to open drawer -->
|
|
<label class="md-header__button md-icon" for="__drawer">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
|
|
</label>
|
|
<div class="md-header__title" data-md-component="header-title">
|
|
|
|
<div class="md-header__ellipsis">
|
|
<span class="md-header__topic md-ellipsis">
|
|
<a href="https://linkedin.github.io/school-of-sre/" title="School Of SRE" >
|
|
School Of SRE
|
|
</a>
|
|
</span>
|
|
<span class="md-header__topic md-ellipsis">
|
|
|
|
Git Basics
|
|
|
|
</span>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<label class="md-header__button md-icon" for="__search">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
|
|
</label>
|
|
<div class="md-search" data-md-component="search" role="dialog">
|
|
<label class="md-search__overlay" for="__search"></label>
|
|
<div class="md-search__inner" role="search">
|
|
<form class="md-search__form" name="search">
|
|
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
|
|
<label class="md-search__icon md-icon" for="__search">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
|
|
</label>
|
|
<nav class="md-search__options" aria-label="Search">
|
|
|
|
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
|
|
</button>
|
|
</nav>
|
|
|
|
</form>
|
|
<div class="md-search__output">
|
|
<div class="md-search__scrollwrap" data-md-scrollfix>
|
|
<div class="md-search-result" data-md-component="search-result">
|
|
<div class="md-search-result__meta">
|
|
Initializing search
|
|
</div>
|
|
<ol class="md-search-result__list" role="presentation"></ol>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</nav>
|
|
</header>
|
|
|
|
<div class="md-container" data-md-component="container">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<main class="md-main" data-md-component="main">
|
|
<div class="md-main__inner md-grid">
|
|
|
|
|
|
|
|
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
|
|
<div class="md-sidebar__scrollwrap">
|
|
<div class="md-sidebar__inner">
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
|
|
<!-- Navigation -->
|
|
<nav
|
|
class="md-nav md-nav--primary"
|
|
aria-label="Navigation"
|
|
data-md-level="0"
|
|
>
|
|
|
|
<!-- Repository information -->
|
|
|
|
|
|
<!-- Navigation list -->
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../.." class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Home
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2"
|
|
checked
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2"
|
|
id="__nav_2_label"
|
|
tabindex=""
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Level 101
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="1"
|
|
aria-labelledby="__nav_2_label"
|
|
aria-expanded="true"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Level 101
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_1"
|
|
checked
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_1"
|
|
id="__nav_2_1_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Fundamentals Series
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="2"
|
|
aria-labelledby="__nav_2_1_label"
|
|
aria-expanded="true"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_1">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Fundamentals Series
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_1_1"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_1_1"
|
|
id="__nav_2_1_1_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Linux Basics
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="3"
|
|
aria-labelledby="__nav_2_1_1_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_1_1">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Linux Basics
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../linux_basics/intro/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../linux_basics/command_line_basics/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Command Line Basics
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../linux_basics/linux_server_administration/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Server Administration
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../linux_basics/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_1_2"
|
|
checked
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_1_2"
|
|
id="__nav_2_1_2_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Git
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="3"
|
|
aria-labelledby="__nav_2_1_2_label"
|
|
aria-expanded="true"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_1_2">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Git
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item md-nav__item--active">
|
|
|
|
|
|
<!-- State toggle -->
|
|
<input
|
|
class="md-nav__toggle md-toggle"
|
|
type="checkbox"
|
|
id="__toc"
|
|
/>
|
|
|
|
<!-- Hack: see partials/toc.html for more information -->
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Navigation link to table of contents -->
|
|
|
|
<label class="md-nav__link md-nav__link--active" for="__toc">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Git Basics
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<a
|
|
href="./"
|
|
class="md-nav__link md-nav__link--active"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Git Basics
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
|
|
<!-- Table of contents -->
|
|
|
|
|
|
|
|
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__title" for="__toc">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Table of contents
|
|
</label>
|
|
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prerequisites" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Prerequisites
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#what-to-expect-from-this-course" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
What to expect from this course
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#what-is-not-covered-under-this-course" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
What is not covered under this course
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#course-contents" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Course Contents
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#git-basics" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Git Basics
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Git Basics">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#creating-a-git-repo" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Creating a Git Repo
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#tracking-a-file" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Tracking a File
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#more-about-a-commit" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
More About a Commit
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#adding-more-changes" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Adding More Changes
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#are-commits-really-linked" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Are commits really linked?
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#the-version-control-part-of-git" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
The Version Control part of Git
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#reference" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Reference
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#references-and-the-magic" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
References and The Magic
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#little-adventure" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Little Adventure
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<!-- Navigation item -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../branches/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Working With Branches
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../github-hooks/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Github and Hooks
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_1_3"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_1_3"
|
|
id="__nav_2_1_3_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Linux Networking
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="3"
|
|
aria-labelledby="__nav_2_1_3_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_1_3">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Linux Networking
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../linux_networking/intro/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../linux_networking/dns/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
DNS
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../linux_networking/udp/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
UDP
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../linux_networking/http/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
HTTP
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../linux_networking/tcp/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
TCP
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../linux_networking/ipr/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Routing
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../linux_networking/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_2"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_2"
|
|
id="__nav_2_2_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Python and Web
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="2"
|
|
aria-labelledby="__nav_2_2_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_2">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Python and Web
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../python_web/intro/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../python_web/python-concepts/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Some Python Concepts
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../python_web/python-web-flask/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Python, Web and Flask
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../python_web/url-shorten-app/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
The URL Shortening App
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../python_web/sre-conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_3"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_3"
|
|
id="__nav_2_3_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Data
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="2"
|
|
aria-labelledby="__nav_2_3_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_3">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Data
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_3_1"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_3_1"
|
|
id="__nav_2_3_1_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Relational Databases
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="3"
|
|
aria-labelledby="__nav_2_3_1_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_3_1">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Relational Databases
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_sql/intro/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_sql/concepts/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Key Concepts
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_sql/mysql/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
MySQL
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_sql/innodb/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
InnoDB
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_sql/backup_recovery/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Backup and Recovery
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_sql/replication/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
MySQL Replication
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_sql/operations/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Operational Concepts
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_sql/select_query/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Select Query
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_sql/query_performance/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Query Performance
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_sql/lab/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Lab
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_sql/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_3_2"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_3_2"
|
|
id="__nav_2_3_2_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
NoSQL
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="3"
|
|
aria-labelledby="__nav_2_3_2_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_3_2">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
NoSQL
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_nosql/intro/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_nosql/key_concepts/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Key Concepts
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_nosql/further_reading/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_3_3"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_3_3"
|
|
id="__nav_2_3_3_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Message Queue
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="3"
|
|
aria-labelledby="__nav_2_3_3_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_3_3">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Message Queue
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../messagequeue/intro/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../messagequeue/key_concepts/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Key Concepts
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../messagequeue/further_reading/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_3_4"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_3_4"
|
|
id="__nav_2_3_4_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Big Data
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="3"
|
|
aria-labelledby="__nav_2_3_4_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_3_4">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Big Data
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../big_data/intro/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../big_data/evolution/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Evolution and Architecture of Hadoop
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../big_data/tasks/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_4"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_4"
|
|
id="__nav_2_4_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Systems Design
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="2"
|
|
aria-labelledby="__nav_2_4_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_4">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Systems Design
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../systems_design/intro/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../systems_design/scalability/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Scalability
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../systems_design/availability/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Availability
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../systems_design/fault-tolerance/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Fault Tolerance
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../systems_design/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_5"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_5"
|
|
id="__nav_2_5_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Metrics and Monitoring
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="2"
|
|
aria-labelledby="__nav_2_5_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_5">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Metrics and Monitoring
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../metrics_and_monitoring/introduction/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../metrics_and_monitoring/command-line_tools/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Command-line Tools
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../metrics_and_monitoring/third-party_monitoring/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Third-party Monitoring
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../metrics_and_monitoring/alerts/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Proactive Monitoring with Alerts
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../metrics_and_monitoring/best_practices/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Best Practices for Monitoring
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../metrics_and_monitoring/observability/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Observability
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../metrics_and_monitoring/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_6"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_6"
|
|
id="__nav_2_6_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Security
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="2"
|
|
aria-labelledby="__nav_2_6_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_6">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Security
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../security/intro/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../security/fundamentals/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Fundamentals of Security
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../security/network_security/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Network Security
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../security/threats_attacks_defences/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Threat, Attacks & Defences
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../security/writing_secure_code/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Writing Secure code
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../security/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_3"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_3"
|
|
id="__nav_3_label"
|
|
tabindex=""
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Level 102
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="1"
|
|
aria-labelledby="__nav_3_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_3">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Level 102
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_3_1"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_3_1"
|
|
id="__nav_3_1_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Linux Intermediate
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="2"
|
|
aria-labelledby="__nav_3_1_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_3_1">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Linux Intermediate
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/linux_intermediate/introduction/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/linux_intermediate/package_management/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Package Management
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/linux_intermediate/storage_media/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Storage Media
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/linux_intermediate/archiving_backup/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Archiving and Backup
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/linux_intermediate/introvim/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction to Vim
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/linux_intermediate/bashscripting/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Bash Scripting
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/linux_intermediate/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_3_2"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_3_2"
|
|
id="__nav_3_2_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Linux Advanced
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="2"
|
|
aria-labelledby="__nav_3_2_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_3_2">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Linux Advanced
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_3_2_1"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_3_2_1"
|
|
id="__nav_3_2_1_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Containerization And Orchestration
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="3"
|
|
aria-labelledby="__nav_3_2_1_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_3_2_1">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Containerization And Orchestration
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/containerization_and_orchestration/intro/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/containerization_and_orchestration/intro_to_containers/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction To Containers
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/containerization_and_orchestration/containerization_with_docker/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Containerization With Docker
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/containerization_and_orchestration/orchestration_with_kubernetes/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Orchestration With Kubernetes
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/containerization_and_orchestration/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_3_2_2"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_3_2_2"
|
|
id="__nav_3_2_2_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
System Calls and Signals
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="3"
|
|
aria-labelledby="__nav_3_2_2_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_3_2_2">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
System Calls and Signals
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_calls_and_signals/intro/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_calls_and_signals/signals/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Signals
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_calls_and_signals/system_calls/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
System Calls
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_calls_and_signals/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_3_3"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_3_3"
|
|
id="__nav_3_3_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Networking
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="2"
|
|
aria-labelledby="__nav_3_3_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_3_3">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Networking
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/networking/introduction/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/networking/security/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Security
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/networking/scale/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Scale
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/networking/rtt/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
RTT
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/networking/infrastructure-features/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Infrastructure Services
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/networking/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_3_4"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_3_4"
|
|
id="__nav_3_4_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
System Design
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="2"
|
|
aria-labelledby="__nav_3_4_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_3_4">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
System Design
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_design/intro/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_design/large-system-design/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Large System Design
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_design/scaling/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Scaling
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_design/scaling-beyond-the-datacenter/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Scaling Beyond the Data Center
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_design/resiliency/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Resiliency
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_design/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_3_5"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_3_5"
|
|
id="__nav_3_5_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
System Troubleshooting and Performance Improvements
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="2"
|
|
aria-labelledby="__nav_3_5_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_3_5">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
System Troubleshooting and Performance Improvements
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_troubleshooting_and_performance/introduction/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_troubleshooting_and_performance/troubleshooting/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Troubleshooting
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_troubleshooting_and_performance/important-tools/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Important Tools
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_troubleshooting_and_performance/performance-improvements/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Performance Improvements
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_troubleshooting_and_performance/troubleshooting-example/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Troubleshooting Example
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_troubleshooting_and_performance/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_3_6"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_3_6"
|
|
id="__nav_3_6_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Continuous Integration and Continuous Delivery
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="2"
|
|
aria-labelledby="__nav_3_6_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_3_6">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Continuous Integration and Continuous Delivery
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/continuous_integration_and_continuous_delivery/introduction/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/continuous_integration_and_continuous_delivery/introduction_to_cicd/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
What is CI/CD?
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/continuous_integration_and_continuous_delivery/cicd_brief_history/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Brief History
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/continuous_integration_and_continuous_delivery/continuous_integration_build_pipeline/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Continuous Integration
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/continuous_integration_and_continuous_delivery/continuous_delivery_release_pipeline/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Continuous Delivery and Deployment
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/continuous_integration_and_continuous_delivery/jenkins_cicd_pipeline_hands_on_lab/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
CI/CD Pipeline - Hands-on
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/continuous_integration_and_continuous_delivery/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../CONTRIBUTING/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Contribute
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../CODE_OF_CONDUCT/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Code of Conduct
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../sre_community/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
SRE Community
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
|
|
<div class="md-sidebar__scrollwrap">
|
|
<div class="md-sidebar__inner">
|
|
|
|
|
|
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__title" for="__toc">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Table of contents
|
|
</label>
|
|
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prerequisites" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Prerequisites
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#what-to-expect-from-this-course" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
What to expect from this course
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#what-is-not-covered-under-this-course" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
What is not covered under this course
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#course-contents" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Course Contents
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#git-basics" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Git Basics
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Git Basics">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#creating-a-git-repo" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Creating a Git Repo
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#tracking-a-file" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Tracking a File
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#more-about-a-commit" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
More About a Commit
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#adding-more-changes" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Adding More Changes
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#are-commits-really-linked" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Are commits really linked?
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#the-version-control-part-of-git" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
The Version Control part of Git
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#reference" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Reference
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#references-and-the-magic" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
References and The Magic
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#little-adventure" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Little Adventure
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="md-content" data-md-component="content">
|
|
<article class="md-content__inner md-typeset">
|
|
|
|
|
|
|
|
|
|
<h1 id="git">Git</h1>
|
|
<h2 id="prerequisites">Prerequisites</h2>
|
|
<ol>
|
|
<li>Have Git installed <a href="https://git-scm.com/downloads">https://git-scm.com/downloads</a></li>
|
|
<li>Have taken any git high-level tutorial or following LinkedIn learning courses<ul>
|
|
<li><a href="https://www.linkedin.com/learning/git-essential-training-the-basics/">https://www.linkedin.com/learning/git-essential-training-the-basics/</a></li>
|
|
<li><a href="https://www.linkedin.com/learning/git-branches-merges-and-remotes/">https://www.linkedin.com/learning/git-branches-merges-and-remotes/</a></li>
|
|
<li><a href="https://git-scm.com/doc">The Official Git Docs</a></li>
|
|
</ul>
|
|
</li>
|
|
</ol>
|
|
<h2 id="what-to-expect-from-this-course">What to expect from this course</h2>
|
|
<p>As an engineer in the field of computer science, having knowledge of version control tools becomes almost a requirement. While there are a lot of version control tools that exist today like SVN, Mercurial, etc, Git perhaps is the most used one and this course we will be working with Git. While this course does not start with Git 101 and expects basic knowledge of git as a prerequisite, it will reintroduce the git concepts known by you with details covering what is happening under the hood as you execute various <code>git</code> commands. So that next time you run a <code>git</code> command, you will be able to press <code>enter</code> more confidently!</p>
|
|
<h2 id="what-is-not-covered-under-this-course">What is not covered under this course</h2>
|
|
<p>Advanced usage and specifics of internal implementation details of Git.</p>
|
|
<h2 id="course-contents">Course Contents</h2>
|
|
<ol>
|
|
<li><a href="https://linkedin.github.io/school-of-sre/level101/git/git-basics/#git-basics">Git Basics</a></li>
|
|
<li><a href="https://linkedin.github.io/school-of-sre/level101/git/branches/">Working with Branches</a></li>
|
|
<li><a href="https://linkedin.github.io/school-of-sre/level101/git/github-hooks/#git-with-github">Git with Github</a></li>
|
|
<li><a href="https://linkedin.github.io/school-of-sre/level101/git/github-hooks/#hooks">Hooks</a></li>
|
|
</ol>
|
|
<h2 id="git-basics">Git Basics</h2>
|
|
<p>Though you might be aware already, let's revisit why we need a version control system. As the project grows and multiple developers start working on it, an efficient method for collaboration is warranted. Git helps the team collaborate easily and also maintains the history of the changes happening with the codebase.</p>
|
|
<h3 id="creating-a-git-repo">Creating a Git Repo</h3>
|
|
<p>Any folder can be converted into a git repository. After executing the following command, we will see a <code>.git</code> folder within the folder, which makes our folder a git repository. <strong>All the magic that git does, <code>.git</code> folder is the enabler for the same.</strong></p>
|
|
<pre><code class="language-bash"># creating an empty folder and changing current dir to it
|
|
$ cd /tmp
|
|
$ mkdir school-of-sre
|
|
$ cd school-of-sre/
|
|
|
|
# initialize a git repo
|
|
$ git init
|
|
Initialized empty Git repository in /private/tmp/school-of-sre/.git/
|
|
</code></pre>
|
|
<p>As the output says, an empty git repo has been initialized in our folder. Let's take a look at what is there.</p>
|
|
<pre><code class="language-bash">$ ls .git/
|
|
HEAD config description hooks info objects refs
|
|
</code></pre>
|
|
<p>There are a bunch of folders and files in the <code>.git</code> folder. As I said, all these enable git to do its magic. We will look into some of these folders and files. But for now, what we have is an empty git repository.</p>
|
|
<h3 id="tracking-a-file">Tracking a File</h3>
|
|
<p>Now as you might already know, let us create a new file in our repo (we will refer to the folder as <em>repo</em> now.) And see <code>git status</code>:</p>
|
|
<pre><code class="language-bash">$ echo "I am file 1" > file1.txt
|
|
$ git status
|
|
On branch master
|
|
|
|
No commits yet
|
|
|
|
Untracked files:
|
|
(use "git add <file>..." to include in what will be committed)
|
|
|
|
file1.txt
|
|
|
|
nothing added to commit but untracked files present (use "git add" to track)
|
|
</code></pre>
|
|
<p>The current git status says <code>No commits yet</code> and there is one untracked file. Since we just created the file, git is not tracking that file. We explicitly need to ask git to track files and folders. (Also checkout <a href="https://git-scm.com/docs/gitignore">gitignore</a>) And how we do that is via <code>git add</code> command as suggested in the above output. Then, we go ahead and create a commit.</p>
|
|
<pre><code class="language-bash">$ git add file1.txt
|
|
$ git status
|
|
On branch master
|
|
|
|
No commits yet
|
|
|
|
Changes to be committed:
|
|
(use "git rm --cached <file>..." to unstage)
|
|
|
|
new file: file1.txt
|
|
|
|
$ git commit -m "adding file 1"
|
|
[master (root-commit) df2fb7a] adding file 1
|
|
1 file changed, 1 insertion(+)
|
|
create mode 100644 file1.txt
|
|
</code></pre>
|
|
<p>Notice how after adding the file, <code>git status</code> says <code>Changes to be committed:</code>. What it means is whatever is listed there, will be included in the next commit. Then, we go ahead and create a commit, with an attached message via <code>-m</code>.</p>
|
|
<h3 id="more-about-a-commit">More About a Commit</h3>
|
|
<p>Commit is a snapshot of the repo. Whenever a commit is made, a snapshot of the current state of repo (the folder) is taken and saved. Each commit has a unique ID. (<code>df2fb7a</code> for the commit we made in the previous step). As we keep adding/changing more and more contents and keep making commits, all those snapshots are stored by git. Again, all this magic happens inside the <code>.git</code> folder. This is where all this snapshot or versions are stored <em>in an efficient manner.</em></p>
|
|
<h3 id="adding-more-changes">Adding More Changes</h3>
|
|
<p>Let us create one more file and commit the change. It would look the same as the previous commit we made.</p>
|
|
<pre><code class="language-bash">$ echo "I am file 2" > file2.txt
|
|
$ git add file2.txt
|
|
$ git commit -m "adding file 2"
|
|
[master 7f3b00e] adding file 2
|
|
1 file changed, 1 insertion(+)
|
|
create mode 100644 file2.txt
|
|
</code></pre>
|
|
<p>A new commit with ID <code>7f3b00e</code> has been created. You can issue <code>git status</code> at any time to see the state of the repository.</p>
|
|
<pre><code> **IMPORTANT: Note that commit IDs are long string (SHA) but we can refer to a commit by its initial few (8 or more) characters too. We will interchangeably using shorter and longer commit IDs.**
|
|
</code></pre>
|
|
<p>Now that we have two commits, let's visualize them:</p>
|
|
<pre><code class="language-bash">$ git log --oneline --graph
|
|
* 7f3b00e (HEAD -> master) adding file 2
|
|
* df2fb7a adding file 1
|
|
</code></pre>
|
|
<p><code>git log</code>, as the name suggests, prints the log of all the git commits. Here you see two additional arguments, <code>--oneline</code> prints the shorter version of the log, ie: the commit message only and not the person who made the commit and when. <code>--graph</code> prints it in graph format.</p>
|
|
<p><strong>Now at this moment, the commits might look like just one in each line but all commits are stored as a tree like data structure internally by git. That means there can be two or more children commits of a given commit. And not just a single line of commits. We will look more into this part when we get to the Branches section. For now, this is our commit history:</strong></p>
|
|
<pre><code class="language-bash"> df2fb7a ===> 7f3b00e
|
|
</code></pre>
|
|
<h3 id="are-commits-really-linked">Are commits really linked?</h3>
|
|
<p>As I just said, the two commits we just made are linked via tree like data structure and we saw how they are linked. But let's actually verify it. Everything in git is an object. Newly created files are stored as an object. Changes to file are stored as an objects and even commits are objects. To view contents of an object, we can use the following command with the object's ID. We will take a look at the contents of the second commit:</p>
|
|
<pre><code class="language-bash">$ git cat-file -p 7f3b00e
|
|
tree ebf3af44d253e5328340026e45a9fa9ae3ea1982
|
|
parent df2fb7a61f5d40c1191e0fdeb0fc5d6e7969685a
|
|
author Sanket Patel <spatel1@linkedin.com> 1603273316 -0700
|
|
committer Sanket Patel <spatel1@linkedin.com> 1603273316 -0700
|
|
|
|
adding file 2
|
|
</code></pre>
|
|
<p>Take a note of <code>parent</code> attribute in the above output. It points to the commit id of the first commit we made. So this proves that they are linked! Additionally, you can see the second commit's message in this object. As I said all this magic is enabled by <code>.git</code> folder and the object to which we are looking at also is in that folder.</p>
|
|
<pre><code class="language-bash">$ ls .git/objects/7f/3b00eaa957815884198e2fdfec29361108d6a9
|
|
.git/objects/7f/3b00eaa957815884198e2fdfec29361108d6a9
|
|
</code></pre>
|
|
<p>It is stored in <code>.git/objects/</code> folder. All the files and changes to them as well are stored in this folder.</p>
|
|
<h3 id="the-version-control-part-of-git">The Version Control part of Git</h3>
|
|
<p>We already can see two commits (versions) in our git log. One thing a version control tool gives you is ability to browse back and forth in history. For example: some of your users are running an old version of code and they are reporting an issue. In order to debug the issue, you need access to the old code. The one in your current repo is the latest code. In this example, you are working on the second commit (<code>7f3b00e</code>) and someone reported an issue with the code snapshot at commit (<code>df2fb7a</code>). This is how you would get access to the code at any older commit.</p>
|
|
<pre><code class="language-bash"># Current contents, two files present
|
|
$ ls
|
|
file1.txt file2.txt
|
|
|
|
# checking out to (an older) commit
|
|
$ git checkout df2fb7a
|
|
Note: checking out 'df2fb7a'.
|
|
|
|
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 df2fb7a adding file 1
|
|
|
|
# checking contents, can verify it has old contents
|
|
$ ls
|
|
file1.txt
|
|
</code></pre>
|
|
<p>So this is how we would get access to old versions/snapshots. All we need is a <em>reference</em> to that snapshot. Upon executing <code>git checkout ...</code>, what git does for you is use the <code>.git</code> folder, see what was the state of things (files and folders) at that version/reference and replace the contents of current directory with those contents. The then-existing content will no longer be present in the local dir (repo) but we can and will still get access to them because they are tracked via <code>git commit</code> and <code>.git</code> folder has them stored/tracked.</p>
|
|
<h3 id="reference">Reference</h3>
|
|
<p>I mention in the previous section that we need a <em>reference</em> to the version. By default, git repo is made of tree of commits. And each commit has a unique IDs. But the unique ID is not the only thing we can reference commits via. There are multiple ways to reference commits. For example: <code>HEAD</code> is a reference to current commit. <em>Whatever commit your repo is checked out at, <code>HEAD</code> will point to that.</em> <code>HEAD~1</code> is reference to previous commit. So while checking out previous version in section above, we could have done <code>git checkout HEAD~1</code>.</p>
|
|
<p>Similarly, <code>master</code> is also a reference (to a branch). Since git uses tree like structure to store commits, there of course will be branches. And the default branch is called <code>master</code>. Master (or any branch reference) will point to the latest commit in the branch. Even though we have checked out to the previous commit in out repo, <code>master</code> still points to the latest commit. And we can get back to the latest version by <code>checkout</code> at <code>master</code> reference</p>
|
|
<pre><code class="language-bash">$ git checkout master
|
|
Previous HEAD position was df2fb7a adding file 1
|
|
Switched to branch 'master'
|
|
|
|
# now we will see latest code, with two files
|
|
$ ls
|
|
file1.txt file2.txt
|
|
</code></pre>
|
|
<p>Note, instead of <code>master</code> in above command, we could have used commit's ID as well.</p>
|
|
<h3 id="references-and-the-magic">References and The Magic</h3>
|
|
<p>Let's look at the state of things. Two commits, <code>master</code> and <code>HEAD</code> references are pointing to the latest commit</p>
|
|
<pre><code class="language-bash">$ git log --oneline --graph
|
|
* 7f3b00e (HEAD -> master) adding file 2
|
|
* df2fb7a adding file 1
|
|
</code></pre>
|
|
<p>The magic? Let's examine these files:</p>
|
|
<pre><code class="language-bash">$ cat .git/refs/heads/master
|
|
7f3b00eaa957815884198e2fdfec29361108d6a9
|
|
</code></pre>
|
|
<p>Viola! Where <code>master</code> is pointing to is stored in a file. <strong>Whenever git needs to know where master reference is pointing to, or if git needs to update where master points, it just needs to update the file above.</strong> So when you create a new commit, a new commit is created on top of the current commit and the master file is updated with the new commit's ID.</p>
|
|
<p>Similary, for <code>HEAD</code> reference:</p>
|
|
<pre><code class="language-bash">$ cat .git/HEAD
|
|
ref: refs/heads/master
|
|
</code></pre>
|
|
<p>We can see <code>HEAD</code> is pointing to a reference called <code>refs/heads/master</code>. So <code>HEAD</code> will point where ever the <code>master</code> points.</p>
|
|
<h3 id="little-adventure">Little Adventure</h3>
|
|
<p>We discussed how git will update the files as we execute commands. But let's try to do it ourselves, by hand, and see what happens.</p>
|
|
<pre><code class="language-bash">$ git log --oneline --graph
|
|
* 7f3b00e (HEAD -> master) adding file 2
|
|
* df2fb7a adding file 1
|
|
</code></pre>
|
|
<p>Now, let's change <code>master</code> to point to the previous/first commit.</p>
|
|
<pre><code class="language-bash">$ echo df2fb7a61f5d40c1191e0fdeb0fc5d6e7969685a > .git/refs/heads/master
|
|
$ git log --oneline --graph
|
|
* df2fb7a (HEAD -> master) adding file 1
|
|
|
|
# RESETTING TO ORIGINAL
|
|
$ echo 7f3b00eaa957815884198e2fdfec29361108d6a9 > .git/refs/heads/master
|
|
$ git log --oneline --graph
|
|
* 7f3b00e (HEAD -> master) adding file 2
|
|
* df2fb7a adding file 1
|
|
</code></pre>
|
|
<p>We just edited the <code>master</code> reference file and now we can see only the first commit in git log. Undoing the change to the file brings the state back to original. Not so much of magic, is it?</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</article>
|
|
</div>
|
|
|
|
|
|
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
|
|
</div>
|
|
|
|
</main>
|
|
|
|
<footer class="md-footer">
|
|
|
|
<div class="md-footer-meta md-typeset">
|
|
<div class="md-footer-meta__inner md-grid">
|
|
<div class="md-copyright">
|
|
|
|
<div class="md-copyright__highlight">
|
|
Copyright 2020 LinkedIn Corporation. All Rights Reserved. Licensed under the Creative Commons Attribution 4.0 International Public License
|
|
</div>
|
|
|
|
|
|
Made with
|
|
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
|
|
Material for MkDocs
|
|
</a>
|
|
|
|
</div>
|
|
|
|
<div class="md-social">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a href="https://github.com/linkedin/school-of-sre" target="_blank" rel="noopener" title="github.com" class="md-social__link">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
|
|
</a>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
|
|
</div>
|
|
<div class="md-dialog" data-md-component="dialog">
|
|
<div class="md-dialog__inner md-typeset"></div>
|
|
</div>
|
|
|
|
|
|
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.sections"], "search": "../../../assets/javascripts/workers/search.b8dbb3d2.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
|
|
|
|
|
|
<script src="../../../assets/javascripts/bundle.c8d2eff1.min.js"></script>
|
|
|
|
|
|
</body>
|
|
</html> |