blog/pb071/mr/index.html

49 lines
31 KiB
HTML
Raw Normal View History

<!doctype html>
<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-pb071 docs-doc-id-mr">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v2.4.1">
<title data-rh="true">Submitting merge requests | mf</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://blog.mfocko.xyz/pb071/mr/"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-pb071-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-pb071-current"><meta data-rh="true" property="og:title" content="Submitting merge requests | mf"><meta data-rh="true" name="description" content="This tutorial aims to show you how to follow basic git workflow and submit changes"><meta data-rh="true" property="og:description" content="This tutorial aims to show you how to follow basic git workflow and submit changes"><link data-rh="true" rel="icon" href="/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://blog.mfocko.xyz/pb071/mr/"><link data-rh="true" rel="alternate" href="https://blog.mfocko.xyz/pb071/mr/" hreflang="en"><link data-rh="true" rel="alternate" href="https://blog.mfocko.xyz/pb071/mr/" hreflang="x-default"><link data-rh="true" rel="preconnect" href="https://0VXRFPR4QF-dsn.algolia.net" crossorigin="anonymous"><link rel="search" type="application/opensearchdescription+xml" title="mf" href="/opensearch.xml">
<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="mf RSS Feed">
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="mf Atom Feed">
<link rel="alternate" type="application/json" href="/blog/feed.json" title="mf JSON Feed">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.13.24/dist/katex.min.css" integrity="sha384-odtC+0UGzzFL/6PNoE8rX/SPcQDXBJ+uRepguP4QkPCm2LBxH3FA3y+fKSiJ+AmM" crossorigin="anonymous"><link rel="stylesheet" href="/assets/css/styles.8480cb83.css">
<link rel="preload" href="/assets/js/runtime~main.98394322.js" as="script">
<link rel="preload" href="/assets/js/main.5876beef.js" as="script">
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><b class="navbar__title text--truncate">mf</b></a><div class="navbar__item dropdown dropdown--hoverable"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link">Additional FI MU materials</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/ib002/">IB002: Algorithms</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/pb071/">PB071: C</a></li><li><a class="dropdown__link" href="/pb161/">PB161: C++</a></li></ul></div><a class="navbar__item navbar__link" href="/contributions/">Contributions</a><a class="navbar__item navbar__link" href="/talks/">Talks</a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/blog/">Blog</a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Switch between dark and light mode (currently light mode)" aria-label="Switch between dark and light mode (currently light mode)" aria-live="polite"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="searchBox_ZlJk"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapp
through <em>Merge Requests</em> for review.</p><p>The rudimentary idea behind aims for changes to be present on a separate branch
that is supposedly <em>merged</em> into the default branch. Till then changes can be reviewed
on <em>Merge Request</em> and additional changes may be made based on the reviews. Once
the changes satisfy requirements, the merge request is merged.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="tutorial">Tutorial<a href="#tutorial" class="hash-link" aria-label="Direct link to Tutorial" title="Direct link to Tutorial"></a></h2><blockquote><p>Use this tutorial only for bonus assignments <strong>made by your tutors</strong> or in case
you need to make up for the absence.</p></blockquote><h3 class="anchor anchorWithStickyNavbar_LWe7" id="step-1---starting-from-the-clean-repository">Step #1 - Starting from the clean repository<a href="#step-1---starting-from-the-clean-repository" class="hash-link" aria-label="Direct link to Step #1 - Starting from the clean repository" title="Direct link to Step #1 - Starting from the clean repository"></a></h3><p>In your repository (either locally or on aisa) type <code>git status</code> and check if your
repository is clean and you are present on the main branch (<code>master</code>, <code>main</code> or
<code>trunk</code>). If you do not know what your default branch is, it is probably <code>master</code>
and you should not be on any other branch.</p><p>Output of the command should look like this:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#000000;--prism-background-color:#ffffff"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#000000"><span class="token plain">aisa$ git status</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">On branch master # Or main or trunk.</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">Your branch is up to date with &#x27;origin/master&#x27;.</span><br></span><span class="token-line" style="color:#000000"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">nothing to commit, working tree clean</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><blockquote><p>In case you are on different branch or there are uncommitted changes,
<strong>do not continue!!!</strong> Clean your repository (commit the changes or discard
them), before you continue.</p></blockquote><h3 class="anchor anchorWithStickyNavbar_LWe7" id="step-2---create-new-branch">Step #2 - Create new branch<a href="#step-2---create-new-branch" class="hash-link" aria-label="Direct link to Step #2 - Create new branch" title="Direct link to Step #2 - Create new branch"></a></h3><p>In your repository write command:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#000000;--prism-background-color:#ffffff"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#000000"><span class="token plain">aisa$ git checkout -b BRANCH</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">Switched to a new branch &#x27;BRANCH&#x27;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Instead of <code>BRANCH</code> use some reasonable name for the branch. For example if you
are working on the seminar from 3rd week, name the branch <code>seminar-03</code>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="step-3---do-the-assignment">Step #3 - Do the assignment<a href="#step-3---do-the-assignment" class="hash-link" aria-label="Direct link to Step #3 - Do the assignment" title="Direct link to Step #3 - Do the assignment"></a></h3><p>Download the skeleton for the seminar assignment, extract and program. For example
if you are working on 3rd seminar, you can do so by:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#000000;--prism-background-color:#ffffff"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#000000"><span class="token plain">aisa$ wget https://www.fi.muni.cz/pb071/seminars/seminar-03/pb071-seminar-03.zip</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">aisa$ unzip pb071-seminar-03.zip</span><br></span><span class="token-line" style="color:#000000"><span class="token plain"># Now you should have directory &#x27;seminar-03&#x27;.</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">aisa$ rm pb071-seminar-03.zip</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">aisa$ cd seminar-03</span><br></span><span class="token-line" style="color:#000000"><span class="token plain"># You can work on the assignment.</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="step-4---commit-and-upload-the-changes-to-gitlab">Step #4 - Commit and upload the changes to GitLab<a href="#step-4---commit-and-upload-the-changes-to-gitlab" class="hash-link" aria-label="Direct link to Step #4 - Commit and upload the changes to GitLab" title="Direct link to Step #4 - Commit and upload the changes to GitLab"></a></h3><p>The same way you <em>add</em> and <em>commit</em> files for the homework assignments, you do for
the seminar.</p><p>Now you can upload the changes to GitLab. <code>git push</code> is not enough, since repository
on GitLab does not know your new branch. You can solve this by adding arguments:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#000000;--prism-background-color:#ffffff"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#000000"><span class="token plain">aisa$ git push origin BRANCH</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">...</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">remote: To create a merge request for BRANCH, visit:</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">remote: https://gitlab.fi.muni.cz/login/pb071/merge_requests/new?merge_request%5Bsource_branch%5D=BRANCH</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">...</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>In the output you should have a link for creating a merge request. If you see this
link, open it and skip next step.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="step-5---creating-a-merge-request-manually">Step #5 - Creating a merge request manually<a href="#step-5---creating-a-merge-request-manually" class="hash-link" aria-label="Direct link to Step #5 - Creating a merge request manually" title="Direct link to Step #5 - Creating a merge request manually"></a></h3><ol><li>Open your repository on GitLab.</li><li>On the left panel click on <em>Merge Requests</em>.</li><li>Click on <em>New Merge Request</em>.</li><li>In <em>Source branch</em> select <code>login/pb071</code> and <code>BRANCH</code>, which you created.</li><li>In <em>Target branch</em> select <code>login/pb071</code> and your default branch you have seen
in the output of the first command. (most likely <code>master</code>)</li><li>Click on <em>Compare branches and continue</em>.</li></ol><h3 class="anchor anchorWithStickyNavbar_LWe7" id="step-6---set-assignees">Step #6 - Set assignees<a href="#step-6---set-assignees" class="hash-link" aria-label="Direct link to Step #6 - Set assignees" title="Direct link to Step #6 - Set assignees"></a></h3><p>On the page that is opened, please check at the top that you are creating merge
request <strong>from</strong> your new branch <strong>to</strong> your default branch (one of <code>master</code>, <code>main</code>
or <code>trunk</code>).</p><p>Then in the field <em>Assignees</em> set your tutors based on the seminar group. You can
use login for a quick look up.</p><p>In the end click on <em>Submit merge request</em>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="step-7---return-to-default-branch">Step #7 - Return to default branch<a href="#step-7---return-to-default-branch" class="hash-link" aria-label="Direct link to Step #7 - Return to default branch" title="Direct link to Step #7 - Return to default branch"></a></h3><p>Homework assignments can be submitted only from branches specified in the rules
for the course. Because of that, before you do anything else, you should switch
back to your default branch.</p><p>First of all, same as in step #1, check that your repository is clean with <code>git status</code>.
For the sake of safety, do not continue without clean repository. Then with command
<code>git checkout BRANCH</code> switch to your default branch <code>BRANCH</code>.</p><p>If you do not know which branch is your default, try <code>git branch</code> that outputs all branches in your repository. Default branch is typically <code>master</code>, but can
be <code>main</code> or <code>trunk</code>.</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#000000;--prism-background-color:#ffffff"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#000000"><span class="token plain">aisa$ git status</span><br></span><span class="token-line" style="color:#000000"><span class="token plain"># Check if repository is clean</span><br></span><span class="token-line" style="color:#000000"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"># If you know, what is your default branch, you can skip next command.</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">aisa$ git branch</span><br></span><span class="token-line" style="color:#000000"><span class="token plain"># Find the default branch in the list; should be one of the `master`, `main` or</span><br></span><span class="token-line" style="color:#000000"><span class="token plain"># `trunk` and you should not have more than one of those.</span><br></span><span class="token-line" style="color:#000000"><span class="token plain"># In case the list clears the terminal and you cannot see shell prompt, you can</span><br></span><span class="token-line" style="color:#000000"><span class="token plain"># press `q` to quit the pager.</span><br></span><span class="token-line" style="color:#000000"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">aisa$ git checkout master</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><hr><p>Adapted from: <a href="https://www.fi.muni.cz/~xlacko1/pb071/mr.html" target="_blank" rel="noopener noreferrer">https://www.fi.muni.cz/~xlacko1/pb071/mr.html</a></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://gitlab.com/mfocko/blog/tree/main/pb071/mr.md" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_vwxv"><span class="theme-last-updated">Last updated<!-- --> on <b><time datetime="2023-09-07T18:13:43.000Z">Sep 7, 2023</time></b></span></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/pb071/pexam/cams/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Practice exam C</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#tutorial" class="table-of-contents__link toc-highlight">Tutorial</a><ul><li><a href="#step-1---starting-from-the-clean-repository" class="table-of-contents__link toc-highlight">Step #1 - Starting from the clean repository</a></li><li><a href="#step-2---create-new-branch" class="table-of-contents__link toc-highlight">Step #2 - Create new br
<script src="/assets/js/runtime~main.98394322.js"></script>
<script src="/assets/js/main.5876beef.js"></script>
</body>
</html>