CINXE.COM

Git - Fjärrgrenar

<!DOCTYPE html> <html lang="sv"> <head> <meta charset='utf-8'> <meta content='IE=edge,chrome=1' http-equiv='X-UA-Compatible'> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Git - Fjärrgrenar</title> <link href="/favicon.ico" rel='shortcut icon' type='image/x-icon'> <link rel="stylesheet" href="/application.min.css"> <script src="/js/modernizr.js"></script> <script src="/js/modernize.js"></script> </head> <body id="documentation"> <div class="inner"> <header> <a href="/"><img src="/images/logo@2x.png" width="110" height="46" alt="Git" /></a> <span id="tagline"></span> <script type="text/javascript"> const taglines = [ "fast-version-control", "everything-is-local", "distributed-even-if-your-workflow-isnt", "local-branching-on-the-cheap", "distributed-is-the-new-centralized" ]; var tagline = taglines[Math.floor(Math.random() * taglines.length)]; document.getElementById('tagline').innerHTML = '--' + tagline; </script> <form id="search" action="/search/results"> <input id="search-text" name="search" placeholder="Type / to search entire site…" autocomplete="off" type="text" /> </form> <div id="search-results"></div> </header> </div> <div class="inner"> <div id="content-wrapper"> <div tabindex="1" class="sidebar-btn"></div> <aside class="sidebar" id="sidebar"> <nav> <ul> <li> <a href="/about">About</a> <ul> </ul> </li> <li> <a href="/doc" class="active">Documentation</a> <ul class="expanded"> <li> <a href="/docs">Reference</a> </li> <li> <a href="/book" class="active">Book</a> </li> <li> <a href="/videos">Videos</a> </li> <li> <a href="/doc/ext">External Links</a> </li> </ul> </li> <li> <a href="/downloads">Downloads</a> <ul > <li> <a href="/downloads/guis">GUI Clients</a> </li> <li> <a href="/downloads/logos">Logos</a> </li> </ul> </li> <li> <a href="/community">Community</a> </li> </ul> <hr class="sidebar"> <p> This book is available in <a href="/book/en/v2/Git-Branching-Remote-Branches">English</a>. </p> <p> Full translation available in <table> <tr><td><a href="/book/az/v2/Git%e2%80%99d%c9%99-Branch-Uzaq-Branch%e2%80%99lar">azərbaycan dili</a>,</td></tr> <tr><td><a href="/book/bg/v2/%d0%9a%d0%bb%d0%be%d0%bd%d0%be%d0%b2%d0%b5-%d0%b2-Git-%d0%9e%d1%82%d0%b4%d0%b0%d0%bb%d0%b5%d1%87%d0%b5%d0%bd%d0%b8-%d0%ba%d0%bb%d0%be%d0%bd%d0%be%d0%b2%d0%b5">български език</a>,</td></tr> <tr><td><a href="/book/de/v2/Git-Branching-Remote-Branches">Deutsch</a>,</td></tr> <tr><td><a href="/book/es/v2/Ramificaciones-en-Git-Ramas-Remotas">Español</a>,</td></tr> <tr><td><a href="/book/fr/v2/Les-branches-avec-Git-Branches-de-suivi-%c3%a0-distance">Français</a>,</td></tr> <tr><td><a href="/book/gr">Ελληνικά</a>,</td></tr> <tr><td><a href="/book/ja/v2/Git-%e3%81%ae%e3%83%96%e3%83%a9%e3%83%b3%e3%83%81%e6%a9%9f%e8%83%bd-%e3%83%aa%e3%83%a2%e3%83%bc%e3%83%88%e3%83%96%e3%83%a9%e3%83%b3%e3%83%81">日本語</a>,</td></tr> <tr><td><a href="/book/ko/v2/Git-%eb%b8%8c%eb%9e%9c%ec%b9%98-%eb%a6%ac%eb%aa%a8%ed%8a%b8-%eb%b8%8c%eb%9e%9c%ec%b9%98">한국어</a>,</td></tr> <tr><td><a href="/book/nl/v2/Branchen-in-Git-Branches-op-afstand-Remote-branches">Nederlands</a>,</td></tr> <tr><td><a href="/book/ru/v2/%d0%92%d0%b5%d1%82%d0%b2%d0%bb%d0%b5%d0%bd%d0%b8%d0%b5-%d0%b2-Git-%d0%a3%d0%b4%d0%b0%d0%bb%d1%91%d0%bd%d0%bd%d1%8b%d0%b5-%d0%b2%d0%b5%d1%82%d0%ba%d0%b8">Русский</a>,</td></tr> <tr><td><a href="/book/sl/v2/Veje-Git-Oddaljene-veje">Slovenščina</a>,</td></tr> <tr><td><a href="/book/tl/v2/Pag-branch-ng-Git-Remote-na-mga-Branch">Tagalog</a>,</td></tr> <tr><td><a href="/book/uk/v2/%d0%93%d0%b0%d0%bb%d1%83%d0%b6%d0%b5%d0%bd%d0%bd%d1%8f-%d0%b2-git-%d0%92%d1%96%d0%b4%d0%b4%d0%b0%d0%bb%d0%b5%d0%bd%d1%96-%d0%b3%d1%96%d0%bb%d0%ba%d0%b8">Українська</a></td></tr> <tr><td><a href="/book/zh/v2/Git-%e5%88%86%e6%94%af-%e8%bf%9c%e7%a8%8b%e5%88%86%e6%94%af">简体中文</a>,</td></tr> </table> </p> <p> Partial translations available in <table> <tr><td><a href="/book/cs/v2/V%c4%9btve-v-syst%c3%a9mu-Git-Vzd%c3%a1len%c3%a9-v%c4%9btve">Čeština</a>,</td></tr> <tr><td><a href="/book/mk/v2/%d0%93%d1%80%d0%b0%d0%bd%d0%b5%d1%9a%d0%b5-%d0%b2%d0%be-Git-%d0%94%d0%b0%d0%bb%d0%b5%d1%87%d0%b8%d0%bd%d1%81%d0%ba%d0%b8-%d0%b3%d1%80%d0%b0%d0%bd%d0%ba%d0%b8">Македонски</a>,</td></tr> <tr><td><a href="/book/pl/v2/Ga%c5%82%c4%99zie-Gita-Ga%c5%82%c4%99zie-zdalne">Polski</a>,</td></tr> <tr><td><a href="/book/sr/v2/%d0%93%d1%80%d0%b0%d0%bd%d0%b0%d1%9a%d0%b5-%d1%83-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d1%83-%d0%93%d0%b8%d1%82-%d0%a3%d0%b4%d0%b0%d1%99%d0%b5%d0%bd%d0%b5-%d0%b3%d1%80%d0%b0%d0%bd%d0%b5">Српски</a>,</td></tr> <tr><td><a href="/book/uz/v2/Git-%d0%b4%d0%b0-%d1%82%d0%b0%d1%80%d0%bc%d0%be%d2%9b%d0%bb%d0%b0%d0%bd%d0%b8%d1%88-%d0%a3%d0%b7%d0%be%d2%9b-%d0%bc%d0%b0%d1%81%d0%be%d1%84%d0%b0%d0%b4%d0%b0%d0%b3%d0%b8-%d1%82%d0%b0%d1%80%d0%bc%d0%be%d2%9b%d0%bb%d0%b0%d1%80">Ўзбекча</a>,</td></tr> <tr><td><a href="/book/zh-tw/v2/%e4%bd%bf%e7%94%a8-Git-%e5%88%86%e6%94%af-%e9%81%a0%e7%ab%af%e5%88%86%e6%94%af">繁體中文</a>,</td></tr> </table> </p> <p> Translations started for <table> <tr><td><a href="/book/be/v2/Git-Branching-Remote-Branches">Беларуская</a>,</td></tr> <tr><td><a href="/book/fa/v2/%d8%b4%d8%a7%d8%ae%d9%87%e2%80%8c%d8%b3%d8%a7%d8%b2%db%8c-%d8%af%d8%b1-%da%af%db%8c%d8%aa-%d8%b4%d8%a7%d8%ae%d9%87%e2%80%8c%d9%87%d8%a7%db%8c-%d8%b1%db%8c%d9%85%d9%88%d8%aa" dir="rtl">فارسی</a>,</td></tr> <tr><td><a href="/book/id/v2/Git-Branching-Remote-Branches">Indonesian</a>,</td></tr> <tr><td><a href="/book/it/v2/Git-Branching-Remote-Branches">Italiano</a>,</td></tr> <tr><td><a href="/book/ms/v2/Git-Branching-Remote-Branches">Bahasa Melayu</a>,</td></tr> <tr><td><a href="/book/pt-br/v2/Branches-no-Git-Branches-remotos">Português (Brasil)</a>,</td></tr> <tr><td><a href="/book/pt-pt/v2/Ramifica%c3%a7%c3%a3o-do-Git-Remote-Branches">Português (Portugal)</a>,</td></tr> <tr><td><a href="/book/sv/v2/Git-f%c3%b6rgreningar-Fj%c3%a4rrgrenar">Svenska</a>,</td></tr> <tr><td><a href="/book/tr/v2/Git-Dallar%c4%b1-Uzak-Dallar">Türkçe</a>.</td></tr> </table> </p> <hr class="sidebar"/> <p> The source of this book is <a href="https://github.com/progit2-sv/progit2">hosted on GitHub.</a></br> Patches, suggestions and comments are welcome. </p> </nav> </aside> <div id="content"> <div id="book-chapters"> <a class="dropdown-trigger" id="book-chapters-trigger" data-panel-id="chapters-dropdown" href="#">Chapters ▾</a> <div class='dropdown-panel' id='chapters-dropdown'> <div class='three-column'> <div class="column-left"> <ol class='book-toc'> <li class='chapter'> <h2>1. <a href="/book/sv/v2/Kom-ig%c3%a5ng-Om-versionshantering">Kom igång</a></h2> <ol> <li> 1.1 <a href="/book/sv/v2/Kom-ig%c3%a5ng-Om-versionshantering">Om versionshantering</a> </li> <li> 1.2 <a href="/book/sv/v2/Kom-ig%c3%a5ng-En-kort-historik-av-Git">En kort historik av Git</a> </li> <li> 1.3 <a href="/book/sv/v2/Kom-ig%c3%a5ng-Vad-%c3%a4r-Git%3F">Vad är Git?</a> </li> <li> 1.4 <a href="/book/sv/v2/Kom-ig%c3%a5ng-Kommandoraden">Kommandoraden</a> </li> <li> 1.5 <a href="/book/sv/v2/Kom-ig%c3%a5ng-Installera-Git">Installera Git</a> </li> <li> 1.6 <a href="/book/sv/v2/Kom-ig%c3%a5ng-Anv%c3%a4nda-Git-f%c3%b6r-f%c3%b6rsta-g%c3%a5ngen">Använda Git för första gången</a> </li> <li> 1.7 <a href="/book/sv/v2/Kom-ig%c3%a5ng-F%c3%a5-hj%c3%a4lp">Få hjälp</a> </li> <li> 1.8 <a href="/book/sv/v2/Kom-ig%c3%a5ng-Sammanfattning">Sammanfattning</a> </li> </ol> </li> <li class='chapter'> <h2>2. <a href="/book/sv/v2/Grunder-i-Git-Skaffa-ett-Git-f%c3%b6rvar">Grunder i Git</a></h2> <ol> <li> 2.1 <a href="/book/sv/v2/Grunder-i-Git-Skaffa-ett-Git-f%c3%b6rvar">Skaffa ett Git-förvar</a> </li> <li> 2.2 <a href="/book/sv/v2/Grunder-i-Git-Spara-%c3%a4ndringar-till-f%c3%b6rvaret">Spara ändringar till förvaret</a> </li> <li> 2.3 <a href="/book/sv/v2/Grunder-i-Git-Visa-historiken">Visa historiken</a> </li> <li> 2.4 <a href="/book/sv/v2/Grunder-i-Git-%c3%85ngra-saker">Ångra saker</a> </li> <li> 2.5 <a href="/book/sv/v2/Grunder-i-Git-Jobba-med-fj%c3%a4rrf%c3%b6rvar">Jobba med fjärrförvar</a> </li> <li> 2.6 <a href="/book/sv/v2/Grunder-i-Git-Taggning">Taggning</a> </li> <li> 2.7 <a href="/book/sv/v2/Grunder-i-Git-Git-alias">Git alias</a> </li> <li> 2.8 <a href="/book/sv/v2/Grunder-i-Git-Sammanfattning">Sammanfattning</a> </li> </ol> </li> <li class='chapter'> <h2>3. <a href="/book/sv/v2/Git-f%c3%b6rgreningar-Grenar-i-ett-n%c3%b6tskal">Git förgreningar</a></h2> <ol> <li> 3.1 <a href="/book/sv/v2/Git-f%c3%b6rgreningar-Grenar-i-ett-n%c3%b6tskal">Grenar i ett nötskal</a> </li> <li> 3.2 <a href="/book/sv/v2/Git-f%c3%b6rgreningar-Grundl%c3%a4ggande-f%c3%b6rgrening-och-sammanslagning">Grundläggande förgrening och sammanslagning</a> </li> <li> 3.3 <a href="/book/sv/v2/Git-f%c3%b6rgreningar-Hantera-grenar">Hantera grenar</a> </li> <li> 3.4 <a href="/book/sv/v2/Git-f%c3%b6rgreningar-Arbetsfl%c3%b6de-med-grenar">Arbetsflöde med grenar</a> </li> <li> 3.5 <a href="/book/sv/v2/Git-f%c3%b6rgreningar-Fj%c3%a4rrgrenar" class="active">Fjärrgrenar</a> </li> <li> 3.6 <a href="/book/sv/v2/Git-f%c3%b6rgreningar-Grenflytt">Grenflytt</a> </li> <li> 3.7 <a href="/book/sv/v2/Git-f%c3%b6rgreningar-Sammanfattning">Sammanfattning</a> </li> </ol> </li> <li class='chapter'> <h2>4. <a href="/book/sv/v2/Git-p%c3%a5-servern-Protokollen">Git på servern</a></h2> <ol> <li> 4.1 <a href="/book/sv/v2/Git-p%c3%a5-servern-Protokollen">Protokollen</a> </li> <li> 4.2 <a href="/book/sv/v2/Git-p%c3%a5-servern-Skaffa-Git-p%c3%a5-en-server">Skaffa Git på en server</a> </li> <li> 4.3 <a href="/book/sv/v2/Git-p%c3%a5-servern-Generera-din-publika-SSH-nyckel">Generera din publika SSH-nyckel</a> </li> <li> 4.4 <a href="/book/sv/v2/Git-p%c3%a5-servern-Konvigurera-servern">Konvigurera servern</a> </li> <li> 4.5 <a href="/book/sv/v2/Git-p%c3%a5-servern-Git-Daemonen">Git Daemonen</a> </li> <li> 4.6 <a href="/book/sv/v2/Git-p%c3%a5-servern-Smart-HTTP">Smart HTTP</a> </li> <li> 4.7 <a href="/book/sv/v2/Git-p%c3%a5-servern-GitWeb">GitWeb</a> </li> <li> 4.8 <a href="/book/sv/v2/Git-p%c3%a5-servern-GitLab">GitLab</a> </li> <li> 4.9 <a href="/book/sv/v2/Git-p%c3%a5-servern-Alternativ-tillhandah%c3%a5llna-av-tredje-part">Alternativ tillhandahållna av tredje part</a> </li> <li> 4.10 <a href="/book/sv/v2/Git-p%c3%a5-servern-Sammanfattning">Sammanfattning</a> </li> </ol> </li> <li class='chapter'> <h2>5. <a href="/book/sv/v2/Distribuerade-Git-Distribuerade-arbetsfl%c3%b6den">Distribuerade Git</a></h2> <ol> <li> 5.1 <a href="/book/sv/v2/Distribuerade-Git-Distribuerade-arbetsfl%c3%b6den">Distribuerade arbetsflöden</a> </li> <li> 5.2 <a href="/book/sv/v2/Distribuerade-Git-Medverka-i-ett-projekt">Medverka i ett projekt</a> </li> <li> 5.3 <a href="/book/sv/v2/Distribuerade-Git-Underh%c3%a5lla-ett-projekt">Underhålla ett projekt</a> </li> <li> 5.4 <a href="/book/sv/v2/Distribuerade-Git-Sammanfattning">Sammanfattning</a> </li> </ol> </li> </ol> </div> <div class='column-middle'> <ol class='book-toc'> <li class='chapter'> <h2>6. <a href="/book/sv/v2/GitHub-Account-Setup-and-Configuration">GitHub</a></h2> <ol> <li> 6.1 <a href="/book/sv/v2/GitHub-Account-Setup-and-Configuration">Account Setup and Configuration</a> </li> <li> 6.2 <a href="/book/sv/v2/GitHub-Contributing-to-a-Project">Contributing to a Project</a> </li> <li> 6.3 <a href="/book/sv/v2/GitHub-Maintaining-a-Project">Maintaining a Project</a> </li> <li> 6.4 <a href="/book/sv/v2/GitHub-Managing-an-organization">Managing an organization</a> </li> <li> 6.5 <a href="/book/sv/v2/GitHub-Scripting-GitHub">Scripting GitHub</a> </li> <li> 6.6 <a href="/book/sv/v2/GitHub-Summary">Summary</a> </li> </ol> </li> <li class='chapter'> <h2>7. <a href="/book/sv/v2/Git-Tools-Revision-Selection">Git Tools</a></h2> <ol> <li> 7.1 <a href="/book/sv/v2/Git-Tools-Revision-Selection">Revision Selection</a> </li> <li> 7.2 <a href="/book/sv/v2/Git-Tools-Interactive-Staging">Interactive Staging</a> </li> <li> 7.3 <a href="/book/sv/v2/Git-Tools-Stashing-and-Cleaning">Stashing and Cleaning</a> </li> <li> 7.4 <a href="/book/sv/v2/Git-Tools-Signing-Your-Work">Signing Your Work</a> </li> <li> 7.5 <a href="/book/sv/v2/Git-Tools-Searching">Searching</a> </li> <li> 7.6 <a href="/book/sv/v2/Git-Tools-Rewriting-History">Rewriting History</a> </li> <li> 7.7 <a href="/book/sv/v2/Git-Tools-Reset-Demystified">Reset Demystified</a> </li> <li> 7.8 <a href="/book/sv/v2/Git-Tools-Advanced-Merging">Advanced Merging</a> </li> <li> 7.9 <a href="/book/sv/v2/Git-Tools-Rerere">Rerere</a> </li> <li> 7.10 <a href="/book/sv/v2/Git-Tools-Debugging-with-Git">Debugging with Git</a> </li> <li> 7.11 <a href="/book/sv/v2/Git-Tools-Submodules">Submodules</a> </li> <li> 7.12 <a href="/book/sv/v2/Git-Tools-Bundling">Bundling</a> </li> <li> 7.13 <a href="/book/sv/v2/Git-Tools-Replace">Replace</a> </li> <li> 7.14 <a href="/book/sv/v2/Git-Tools-Credential-Storage">Credential Storage</a> </li> <li> 7.15 <a href="/book/sv/v2/Git-Tools-Summary">Summary</a> </li> </ol> </li> <li class='chapter'> <h2>8. <a href="/book/sv/v2/Customizing-Git-Git-Configuration">Customizing Git</a></h2> <ol> <li> 8.1 <a href="/book/sv/v2/Customizing-Git-Git-Configuration">Git Configuration</a> </li> <li> 8.2 <a href="/book/sv/v2/Customizing-Git-Git-Attributes">Git Attributes</a> </li> <li> 8.3 <a href="/book/sv/v2/Customizing-Git-Git-Hooks">Git Hooks</a> </li> <li> 8.4 <a href="/book/sv/v2/Customizing-Git-An-Example-Git-Enforced-Policy">An Example Git-Enforced Policy</a> </li> <li> 8.5 <a href="/book/sv/v2/Customizing-Git-Summary">Summary</a> </li> </ol> </li> <li class='chapter'> <h2>9. <a href="/book/sv/v2/Git-and-Other-Systems-Git-as-a-Client">Git and Other Systems</a></h2> <ol> <li> 9.1 <a href="/book/sv/v2/Git-and-Other-Systems-Git-as-a-Client">Git as a Client</a> </li> <li> 9.2 <a href="/book/sv/v2/Git-and-Other-Systems-Migrating-to-Git">Migrating to Git</a> </li> <li> 9.3 <a href="/book/sv/v2/Git-and-Other-Systems-Summary">Summary</a> </li> </ol> </li> <li class='chapter'> <h2>10. <a href="/book/sv/v2/Git-Internals-Plumbing-and-Porcelain">Git Internals</a></h2> <ol> <li> 10.1 <a href="/book/sv/v2/Git-Internals-Plumbing-and-Porcelain">Plumbing and Porcelain</a> </li> <li> 10.2 <a href="/book/sv/v2/Git-Internals-Git-Objects">Git Objects</a> </li> <li> 10.3 <a href="/book/sv/v2/Git-Internals-Git-References">Git References</a> </li> <li> 10.4 <a href="/book/sv/v2/Git-Internals-Packfiles">Packfiles</a> </li> <li> 10.5 <a href="/book/sv/v2/Git-Internals-The-Refspec">The Refspec</a> </li> <li> 10.6 <a href="/book/sv/v2/Git-Internals-Transfer-Protocols">Transfer Protocols</a> </li> <li> 10.7 <a href="/book/sv/v2/Git-Internals-Maintenance-and-Data-Recovery">Maintenance and Data Recovery</a> </li> <li> 10.8 <a href="/book/sv/v2/Git-Internals-Environment-Variables">Environment Variables</a> </li> <li> 10.9 <a href="/book/sv/v2/Git-Internals-Summary">Summary</a> </li> </ol> </li> </ol> </div> <div class='column-right'> <ol class='book-toc'> <li class='chapter'> <h2>A1. <a href="/book/sv/v2/Bilaga-A:-Git-in-Other-Environments-Graphical-Interfaces">Bilaga A: Git in Other Environments</a></h2> <ol> <li> A1.1 <a href="/book/sv/v2/Bilaga-A:-Git-in-Other-Environments-Graphical-Interfaces">Graphical Interfaces</a> </li> <li> A1.2 <a href="/book/sv/v2/Bilaga-A:-Git-in-Other-Environments-Git-in-Visual-Studio">Git in Visual Studio</a> </li> <li> A1.3 <a href="/book/sv/v2/Bilaga-A:-Git-in-Other-Environments-Git-in-Eclipse">Git in Eclipse</a> </li> <li> A1.4 <a href="/book/sv/v2/Bilaga-A:-Git-in-Other-Environments-Git-in-Bash">Git in Bash</a> </li> <li> A1.5 <a href="/book/sv/v2/Bilaga-A:-Git-in-Other-Environments-Git-in-Zsh">Git in Zsh</a> </li> <li> A1.6 <a href="/book/sv/v2/Bilaga-A:-Git-in-Other-Environments-Git-in-PowerShell">Git in PowerShell</a> </li> <li> A1.7 <a href="/book/sv/v2/Bilaga-A:-Git-in-Other-Environments-Summary">Summary</a> </li> </ol> </li> <li class='chapter'> <h2>A2. <a href="/book/sv/v2/Bilaga-B:-Embedding-Git-in-your-Applications-Command-line-Git">Bilaga B: Embedding Git in your Applications</a></h2> <ol> <li> A2.1 <a href="/book/sv/v2/Bilaga-B:-Embedding-Git-in-your-Applications-Command-line-Git">Command-line Git</a> </li> <li> A2.2 <a href="/book/sv/v2/Bilaga-B:-Embedding-Git-in-your-Applications-Libgit2">Libgit2</a> </li> <li> A2.3 <a href="/book/sv/v2/Bilaga-B:-Embedding-Git-in-your-Applications-JGit">JGit</a> </li> <li> A2.4 <a href="/book/sv/v2/Bilaga-B:-Embedding-Git-in-your-Applications-go-git">go-git</a> </li> <li> A2.5 <a href="/book/sv/v2/Bilaga-B:-Embedding-Git-in-your-Applications-Dulwich">Dulwich</a> </li> </ol> </li> <li class='chapter'> <h2>A3. <a href="/book/sv/v2/Bilaga-C:-Git-Commands-Setup-and-Config">Bilaga C: Git Commands</a></h2> <ol> <li> A3.1 <a href="/book/sv/v2/Bilaga-C:-Git-Commands-Setup-and-Config">Setup and Config</a> </li> <li> A3.2 <a href="/book/sv/v2/Bilaga-C:-Git-Commands-Getting-and-Creating-Projects">Getting and Creating Projects</a> </li> <li> A3.3 <a href="/book/sv/v2/Bilaga-C:-Git-Commands-Basic-Snapshotting">Basic Snapshotting</a> </li> <li> A3.4 <a href="/book/sv/v2/Bilaga-C:-Git-Commands-Branching-and-Merging">Branching and Merging</a> </li> <li> A3.5 <a href="/book/sv/v2/Bilaga-C:-Git-Commands-Sharing-and-Updating-Projects">Sharing and Updating Projects</a> </li> <li> A3.6 <a href="/book/sv/v2/Bilaga-C:-Git-Commands-Inspection-and-Comparison">Inspection and Comparison</a> </li> <li> A3.7 <a href="/book/sv/v2/Bilaga-C:-Git-Commands-Debugging">Debugging</a> </li> <li> A3.8 <a href="/book/sv/v2/Bilaga-C:-Git-Commands-Patching">Patching</a> </li> <li> A3.9 <a href="/book/sv/v2/Bilaga-C:-Git-Commands-Email">Email</a> </li> <li> A3.10 <a href="/book/sv/v2/Bilaga-C:-Git-Commands-External-Systems">External Systems</a> </li> <li> A3.11 <a href="/book/sv/v2/Bilaga-C:-Git-Commands-Administration">Administration</a> </li> <li> A3.12 <a href="/book/sv/v2/Bilaga-C:-Git-Commands-Plumbing-Commands">Plumbing Commands</a> </li> </ol> </li> </ol> </div> </div> </div> <span class="light" id="edition"> 2nd Edition </span> </div> <div id="main" data-pagefind-filter="category:book" data-pagefind-meta="category:Book" data-pagefind-weight="0.05" data-pagefind-body class="book edition2"> <h1>3.5 Git förgreningar - Fjärrgrenar</h1> <div> <h2 id="_remote_branches">Fjärrgrenar</h2> <div class="paragraph"> <p> Fjärreferenser är referenser (pekare) i dina fjärrförvar, inklusive grenar, taggar och så vidare. Du kan få en fullständig lista av fjärreferenser genom kommandot <code>git ls-remote [fjärrnamn]</code>, eller <code>git remote show [fjärrnamn]</code> för fjärrgrenar såväl som ytterligare information. Dock är ett vanligare sätt är att dra nytta av fjärrspårade grenar.</p> </div> <div class="paragraph"> <p>Fjärrspårade grenar är referenser till tillståndet hos fjärrgrenar. De är lokala referenser som du inte kan flytta, utan Git flyttar dem åt dig när du kommunicerar med fjärrförvaret över nätverket, för att på ett korrekt sätt representera dess tillstånd. Du kan tänka på dem som bokmärke, för att påm,inna dig om var grenarna hos ditt fjärrförvar var senast du anslöt till det.</p> </div> <div class="paragraph"> <p>Namnen hos fjärrspårade grenar har formen <code>&lt;fjärrnamn&gt;/&lt;gren&gt;</code>. Till exempel om du vill se var <code>master</code>-grenen på ditt <code>origin</code>-fjärrförvar såg ut senast du kommunicerade med fjärrförvaret, så skulle du kontrollera grenen <code>origin/master</code>. Om du arbetade med en kollega och vederbörande publicerade en <code>iss53</code>-gren, så kanske du har en egen <code>iss53</code>-gren, men grenen på servern skulle representeras av den fjärrspårade grenen <code>origin/iss53</code>.</p> </div> <div class="paragraph"> <p>Detta kan låta lite förvirrande, så låt oss ta ett exempel. Anta att du har en Gitserver på ditt nätverk som nås via <code>git.ourcompany.com</code>. Om du klonar från detta, kommer Gits <code>clone</code>-kommando automatiskt benämna det <code>origin</code> och hämta hem all data, skapa en pekare till var dess <code>master</code>-gren är och benämner den <code>origin/master</code> lokalt hos dig. Git ger dig också en egen lokal <code>master</code>-gren som pekar på samma ställe som fjärrförvarets <code>master</code>-gren så att du kan börja jobba.</p> </div> <div class="admonitionblock note"> <table> <tr> <td class="icon"> <div class="title">Notera</div> </td> <td class="content"> <div class="title">“origin” är inte speciell</div> <div class="paragraph"> <p>Precis som att namnet “master” inte betyder något särskilt i Git, betyder inte heller “origin” något särskilt. Medan “master” är standardnamnet för den första grenen när du kör <code>git init</code>, varför namnet är så välanvent, är “origin” standardnamnet för ett fjärrförvar när du kör <code>git clone</code>. Om du kör <code>git clone -o booyah</code> istället kommer du ha <code>booyah/master</code> som din standardfjärrgren.</p> </div> </td> </tr> </table> </div> <div class="imageblock"> <div class="content"> <img src="/book/sv/v2/images/remote-branches-1.png" alt="Server and local repositories after cloning."> </div> <div class="title">Figur 30. Server och lokala förvar efter kloning</div> </div> <div class="paragraph"> <p>Om du jobbar lite på din lokala <code>master</code>-gren och någon annan under tiden skickar ändringar till <code>git.ourcompany.com</code> och uppdaterar dess <code>master</code>-gren kommer era historiker att utvecklas olika. Och så länge du inte kommunicerar med din server kommer din <code>origin/master</code> pekare inte att flyttas.</p> </div> <div class="imageblock"> <div class="content"> <img src="/book/sv/v2/images/remote-branches-2.png" alt="Local and remote work can diverge."> </div> <div class="title">Figur 31. Lokalt arbete och fjärrarbete kan divergera</div> </div> <div class="paragraph"> <p>För att synkronisera ditt arbete med ett fjärrförvar kör du kommandot <code>git fetch &lt;fjärrnamn&gt;</code> (i vårt fall <code>git fetch origin</code>). Kommandont kontrollerar vilken server som “origin” är (i detta fallet är det <code>git.ourcompany.com</code>), hämptar data från den som du inte redan har och uppdaterar din lokala databas, samt flyttar din <code>origin/master</code>-pekare till sin nya uppdaterade position.</p> </div> <div class="imageblock"> <div class="content"> <img src="/book/sv/v2/images/remote-branches-3.png" alt="`git fetch` updates your remote references."> </div> <div class="title">Figur 32. <code>git fetch</code> uppdaterar dina fjärrspårade grenar</div> </div> <div class="paragraph"> <p>För att demonstrera att ha flera fjärrservrar och vad fjärrgrenar för dessa fjärrprojekten ser ut som, antag att du har ytterligare en intern Gitserver som bara används för utveckling av ett av era sprintteam. Denna server finns på ``git.team1.ourcompany.com`. Du kan lägga till en ny fjärreferens till projektet du nu jobbar på genom att köra kommandopt <code>git remote add</code> som vi behandlade i <a href="/book/sv/v2/ch00/ch02-git-basics-chapter">Grunder i Git</a>. Benämn denna server <code>teamone</code> som kommer vara ditt smeknamn för sökvägen.</p> </div> <div class="imageblock"> <div class="content"> <img src="/book/sv/v2/images/remote-branches-4.png" alt="Adding another server as a remote."> </div> <div class="title">Figur 33. Lägga till ytterligare en server som ett fjärrförvar</div> </div> <div class="paragraph"> <p>Nu kan du köra <code>git fetch teamone</code> för att hämta all från fjärrservern <code>teamone</code> som du ännu inte har. Eftersom den servern har ett delmängd av datan din <code>origin</code>-server har just nu hämtar Git ingen data men sätter en fjärrspårad gren som den kallar <code>teamone/master</code> som pekar på den version som <code>teamone</code> har som sin <code>master</code>-gren.</p> </div> <div class="imageblock"> <div class="content"> <img src="/book/sv/v2/images/remote-branches-5.png" alt="Remote tracking branch for `teamone/master`."> </div> <div class="title">Figur 34. Fjärrspårad gren för <code>teamone/master</code> </div> </div> <div class="sect3"> <h3 id="_pushing_branches">Publicera</h3> <div class="paragraph"> <p> När du vill dela grenar med världen, behöver du publicera dem på ett fjärrförvar dit du har skrivrättigheter. Dina lokala grenar synkroniseras inte automatiskt för fjärrservrarna som du skriver till — du måste explicit publicera grenarna som du vill dela. På så vis kan du använda privata grenar för arbete du inte vill dela och bara publicera de ämnesgrenar du vill samarbeta på.</p> </div> <div class="paragraph"> <p>Om du har en gren sopm heter <code>serverfix</code> som du vill arbeta på tillsammans med andra kan du publicera den på samma sätt som du publicerade din första gren. Kör <code>git push &lt;fjärrnamn&gt; &lt;gren&gt;</code>:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git push origin serverfix Counting objects: 24, done. Delta compression using up to 8 threads. Compressing objects: 100% (15/15), done. Writing objects: 100% (24/24), 1.91 KiB | 0 bytes/s, done. Total 24 (delta 2), reused 0 (delta 0) To https://github.com/schacon/simplegit * [new branch] serverfix -&gt; serverfix</code></pre> </div> </div> <div class="paragraph"> <p>Detta är lite av en genväg. Git expanderar automatiskt grennamnet <code>serverfix</code> till <code>refs/heades/serferfix:refs/heads/serverfix</code>, som betyder “Ta min lokala gren serverfix och publicera den genom att uppdatera fjärrförvarets serverfix-gren.” Vi kommer gå igenom <code>refs/heads/</code>-delen i detalj i <a href="/book/sv/v2/ch00/ch10-git-internals">Git Internals</a>, men i allmänhet kan du strunta i det. Du kan också köra <code>git push origin serverfix:serverfix</code>, som gör samma sak — den säger “Ta min serverfix-gren och gör den till fjärrförvarets serverfix-gren.” Du kan använda detta formatet för att publicera en lokal gren till en fjärrgren som heter något annat. Om du inte vill att den skall kallas <code>serverfix</code> på servern, kan du istället köra <code>git push origin serverfix:grymgren</code> för att publicera din lokala gren <code>serverfix</code> under namnet <code>grymgren</code> på servern.</p> </div> <div class="admonitionblock note"> <table> <tr> <td class="icon"> <div class="title">Notera</div> </td> <td class="content"> <div class="title">Skriv inte ditt lösenord varje gång</div> <div class="paragraph"> <p>Om du använder en HTTPS-sökväg att publicera via, kommer Git fråga efter ditt användarnamn och lösenord för autentisering. Som standard kommer den begära informationen via terminalen så att servern kan avgöra om du får publicera.</p> </div> <div class="paragraph"> <p>Om du inte vill skriva in det varenda gång du publicerar kan du sätta upp en “legitimationsgömma” (eng. “credential cache”). Det enklaste är att datorn håller informationen i minnet några minuter, vilket lätt kan konfigureras genom att köra <code>git config --global credential.helper cache</code>.</p> </div> <div class="paragraph"> <p>För mer information om de olika möjligheterna att temporärt spara legitimationsinformation, se <a href="/book/sv/v2/ch00/_credential_caching">Credential Storage</a>.</p> </div> </td> </tr> </table> </div> <div class="paragraph"> <p>Nästa gång någon av dina kollegor hämtar från servern, kommer de få en referens till var serverns version av <code>serverfix</code> är under fjärrgrenen <code>origin/serverfix</code>:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git fetch origin remote: Counting objects: 7, done. remote: Compressing objects: 100% (2/2), done. remote: Total 3 (delta 0), reused 3 (delta 0) Unpacking objects: 100% (3/3), done. From https://github.com/schacon/simplegit * [new branch] serverfix -&gt; origin/serverfix</code></pre> </div> </div> <div class="paragraph"> <p>Det är viktigt att notera att när du hämtar information som för det med sig nya fjärrspårade grenar så får du inte automatiskt en lokal editerbar kopia av dem. Med andra ord kommer du inte i detta fallet ha en ny <code>serverfix</code>-gren — du har bara en <code>origin/serverfix</code>-pekare som du inte kan modifiera.</p> </div> <div class="paragraph"> <p>För att slå samman detta arbete in i din nuvarande arbetsgren kan du köra <code>git merge origin/serverfix</code>. Om du vill ha din egen <code>serverfix</code>-gren som du kan jobba med, kan du basera den på din fjärrspårade gren:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git checkout -b serverfix origin/serverfix Branch serverfix set up to track remote branch serverfix from origin. Switched to a new branch 'serverfix'</code></pre> </div> </div> <div class="paragraph"> <p>Detta ger dig en lokal gren som du kan jobba på som pekar dit <code>origin/serverfix</code> pekar.</p> </div> </div> <div class="sect3"> <h3 id="_tracking_branches">Följa grenar</h3> <div class="paragraph"> <p> Att checka ut en lokal gren från ett fjärrspårad gren skapar automatiskt det som kallas för en “följande gren” (och den gren den följer kallas för en “uppströmsgren”). Följande grenar är lokala grenar som har en direkt koppling till en fjärrgren. Om du är på en följande gren och skriver <code>git pull</code>, vet Git automatiskt vilken server den skall hämta data från och vilken gren den skall slå ihop ändringarna i.</p> </div> <div class="paragraph"> <p>När du klonar ett förvar skapas generellt en <code>master</code>-gren som följer <code>origin/master</code>. Du kan dock konfigurera andra följande grenar om du önskar — en som följer grenar i andra fjärrförvar, eller om du inte vill följa <code>master</code>-grenen. Det enkla fallet är exemplet du just såg, att köra <code>git checkout -b &lt;gren&gt; &lt;fjärrnamn&gt;/&lt;gren&gt;</code>. Detta är så vanligt förekommande att Git tillhandahåller kortkommandot <code>--track</code>:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git checkout --track origin/serverfix Branch serverfix set up to track remote branch serverfix from origin. Switched to a new branch 'serverfix'</code></pre> </div> </div> <div class="paragraph"> <p>Det är till och med så vanligt att det faktiskt finns en genväg till kortkommandot. Om grenen du försöker checka ut (a) inte existerar och (b) exakt matchar namnet på en gren endast i ett fjärrförvar, kommer Git att skapa en följande gren åt dig:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git checkout serverfix Branch serverfix set up to track remote branch serverfix from origin. Switched to a new branch 'serverfix'</code></pre> </div> </div> <div class="paragraph"> <p>För att sätta upp en lokal gren med ett annat namn än fjärrgrenen kan du enkelt använda den första versionen med ett annat lokalt grennamn:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git checkout -b sf origin/serverfix Branch sf set up to track remote branch serverfix from origin. Switched to a new branch 'sf'</code></pre> </div> </div> <div class="paragraph"> <p>Nu kommer din lokala gren <code>sf</code> automatiskt uppdatera från <code>origin/serverfix</code>.</p> </div> <div class="paragraph"> <p>Om du redan har en lokal gren och vill konfigurera mot en fjärrgren du just hämtat hem eller vill byta ut den uppströmsgren du följer, kan du använda flaggan <code>-u</code> eller <code>--set-upstream-to</code> till kommandot <code>git branch</code> för att explicit ställa in denna när som helst.</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git branch -u origin/serverfix Branch serverfix set up to track remote branch serverfix from origin.</code></pre> </div> </div> <div class="admonitionblock note"> <table> <tr> <td class="icon"> <div class="title">Notera</div> </td> <td class="content"> <div class="title">Uppströmskortkommando</div> <div class="paragraph"> <p>När du har en följande gren inställd kan du referera dess upströmsgren genom kortkommandona <code>@{upstream}</code> eller <code>@{u}</code>. Så om du är på grenen <code>master</code> och den följer <code>origin/master</code> kan du göra något i stil med <code>git merge @{u}</code> istället för <code>git merge origin/master</code> om du vill.</p> </div> </td> </tr> </table> </div> <div class="paragraph"> <p>Om du vill se vilka följande grenar du har inställda, kan du använda flaggan <code>-vv</code> till kommandot <code>git branch</code>. Detta kommer lista dina lokala grenar med mer information, inklusive vad varje gren följer och om din lokala gren ligger före, efter, eller bådadera.</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git branch -vv iss53 7e424c3 [origin/iss53: ahead 2] forgot the brackets master 1ae2a45 [origin/master] deploying index fix * serverfix f8674d9 [teamone/server-fix-good: ahead 3, behind 1] this should do it testing 5ea463a trying something new</code></pre> </div> </div> <div class="paragraph"> <p>Här kan du se att vår <code>iss53</code>-gren följer <code>origin/iss53</code> och ligger “före” med två, vilket betyder att vi har två versioner lokalt som inte är publicerade på servern. Vi kan också se att vår <code>master</code>-gren följer <code>origin/master</code> och är uppdaterad. Vi kan även se att vår gren <code>serverfix</code> följer grenen <code>server-fix-good</code> på vår <code>teamone</code>-server och ligger före med tree och efter med en, vilket betyder att det finns en version på servern som vi inte har inkorporerat i vår lokala gren, och tre versioner lokalt som vi inte har publicerat. Slutligen kan vi se att vår gren <code>testing</code> inte följer någon fjärrgren.</p> </div> <div class="paragraph"> <p>Det är viktigt att notera att dessa siffror återspeglar hur det såg ut senast du hämnade information från varje server. Kommandot kontaktar inte servrarna, utan säger dig vad den kommer ihåg från senast du kontaktade dem. Om du vill vara fullständigt säker kring siffrorna, måste du kontakta alla fjärrförvar innan du kör detta. Du kan göra det såhär:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git fetch --all; git branch -vv</code></pre> </div> </div> </div> <div class="sect3"> <h3 id="_uppdatera">Uppdatera</h3> <div class="paragraph"> <p> Medan kommandot <code>git fetch</code> hämtar alla ändringar från servern som du ännu inte har, kommer det inte att modifiera din arbetskatalog alls. Den kommer bara hämta data och låter dig slå samman ändringarna själv. Dock finns kommandot <code>git pull</code> som i praktiken är <code>git fetch</code> direkt följt av <code>git merge</code>, i de flesta fall. Om du har en följande gren konfigurerad så som demonstrerades i föregående avsnitt, antingen genom att uttryckligen sätta den eller att den skapades åt dig av kommandona <code>clone</code> eller <code>checkout</code>, kommer <code>git pull</code> kontrollera vilket fjärrförvar och gren din aktuella gren följer, hämta från förvaret och sedan försöka slå samman de inkommande ändringarna med din lokala gren.</p> </div> <div class="paragraph"> <p>Ofta är det bättre att helt enkelt använda kommandona <code>fetch</code> och <code>merge</code> explicit eftersom magin hos <code>git pull</code> ofta kan vara förvirrande.</p> </div> </div> <div class="sect3"> <h3 id="_delete_branches">Ta bort Fjärrgrenar</h3> <div class="paragraph"> <p> Anta att du är klar med en fjärrgren — antag att du och dina kollegor är klara med en funktion och har slagit samman ändringarna in i ditt fjärrförvars <code>master</code>-gren (eller vilken gren din stabila kodbas finns i). Du kan ta bort en fjärrgren genom flaggan <code>--delete</code> till <code>git push</code>. Om du vill ta bort din <code>serverfix</code>-gren från servern kör du följande:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git push origin --delete serverfix To https://github.com/schacon/simplegit - [deleted] serverfix</code></pre> </div> </div> <div class="paragraph"> <p>Vad detta gör i praktiken är att den tar pekaren från servern. Gitservern kommer generellt att behålla all data ett tag innan det körs en skräpsamlingsomgång, så om den togs bort oavsiktigen, är den ofta lätt att återskapa.</p> </div> </div> <div id="nav"><a href="/book/sv/v2/Git-förgreningar-Arbetsflöde-med-grenar">prev</a> | <a href="/book/sv/v2/Git-förgreningar-Grenflytt">next</a></div> </div> </div> </div> </div> <footer> <div class="site-source"> <a href="/site">About this site</a><br> Patches, suggestions, and comments are welcome. </div> <div class="sfc-member"> Git is a member of <a href="/sfc">Software Freedom Conservancy</a> </div> </footer> <a href="#top" class="no-js scrollToTop" id="scrollToTop" data-label="Scroll to top"> <img src="/images/icons/chevron-up@2x.png" width="20" height="20" alt="scroll-to-top"/> </a> <script src="/js/jquery-1.7.1.min.js"></script> <script src="/js/jquery-ui-1.8.18.custom.min.js"></script> <script src="/js/jquery.defaultvalue.js"></script> <script src="/js/session.min.js"></script> <script src="/js/application.min.js"></script> </div> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10