CINXE.COM
Git - Basic Snapshotting
<!DOCTYPE html> <html lang="ms"> <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 - Basic Snapshotting</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/Appendix-C:-Git-Commands-Basic-Snapshotting">English</a>. </p> <p> Full translation available in <table> <tr><td><a href="/book/az/v2/Appendix-C:-Git-%c6%8fmrl%c9%99ri-Sad%c9%99-Snapshotting">azərbaycan dili</a>,</td></tr> <tr><td><a href="/book/bg">български език</a>,</td></tr> <tr><td><a href="/book/de/v2/Anhang-C:-Git-Kommandos-Einfache-Snapshot-Funktionen">Deutsch</a>,</td></tr> <tr><td><a href="/book/es/v2/Ap%c3%a9ndice-C:-Comandos-de-Git-Seguimiento-B%c3%a1sico">Español</a>,</td></tr> <tr><td><a href="/book/fr/v2/Commandes-Git-Capture-d%e2%80%99instantan%c3%a9-basique">Français</a>,</td></tr> <tr><td><a href="/book/gr">Ελληνικά</a>,</td></tr> <tr><td><a href="/book/ja/v2/%e4%bb%98%e9%8c%b2-C:-Git%e3%81%ae%e3%82%b3%e3%83%9e%e3%83%b3%e3%83%89-%e5%9f%ba%e6%9c%ac%e7%9a%84%e3%81%aa%e3%82%b9%e3%83%8a%e3%83%83%e3%83%97%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88">日本語</a>,</td></tr> <tr><td><a href="/book/ko/v2/%eb%b6%80%eb%a1%9d-C:-Git-%eb%aa%85%eb%a0%b9%ec%96%b4-%ec%8a%a4%eb%83%85%ec%83%b7-%eb%8b%a4%eb%a3%a8%ea%b8%b0">한국어</a>,</td></tr> <tr><td><a href="/book/nl/v2/Bijlage-C:-Git-Commando%e2%80%99s-Basic-Snapshotten">Nederlands</a>,</td></tr> <tr><td><a href="/book/ru/v2/%d0%9f%d1%80%d0%b8%d0%bb%d0%be%d0%b6%d0%b5%d0%bd%d0%b8%d0%b5-C:-%d0%9a%d0%be%d0%bc%d0%b0%d0%bd%d0%b4%d1%8b-Git-%d0%9e%d1%81%d0%bd%d0%be%d0%b2%d0%bd%d1%8b%d0%b5-%d0%ba%d0%be%d0%bc%d0%b0%d0%bd%d0%b4%d1%8b">Русский</a>,</td></tr> <tr><td><a href="/book/sl/v2/Dodatek-C:-Ukazi-Git-Osnove-posnetkov">Slovenščina</a>,</td></tr> <tr><td><a href="/book/tl/v2/Appendix-C:-Mga-Kautusan-ng-Git-Pangunahing-Snapshotting">Tagalog</a>,</td></tr> <tr><td><a href="/book/uk/v2/%d0%94%d0%be%d0%b4%d0%b0%d1%82%d0%be%d0%ba-C:-%d0%9a%d0%be%d0%bc%d0%b0%d0%bd%d0%b4%d0%b8-Git-%d0%91%d0%b0%d0%b7%d0%be%d0%b2%d0%b5-%d0%b7%d0%b1%d0%b5%d1%80%d0%b5%d0%b6%d0%b5%d0%bd%d0%bd%d1%8f-%d0%b2%d1%96%d0%b4%d0%b1%d0%b8%d1%82%d0%ba%d1%96%d0%b2">Українська</a></td></tr> <tr><td><a href="/book/zh/v2/%e9%99%84%e5%bd%95-C:-Git-%e5%91%bd%e4%bb%a4-%e5%bf%ab%e7%85%a7%e5%9f%ba%e7%a1%80">简体中文</a>,</td></tr> </table> </p> <p> Partial translations available in <table> <tr><td><a href="/book/cs/v2/Appendix-C:-Git-Commands-Basic-Snapshotting">Čeština</a>,</td></tr> <tr><td><a href="/book/mk/v2/Appendix-C:-Git-%d0%ba%d0%be%d0%bc%d0%b0%d0%bd%d0%b4%d0%b8-Basic-Snapshotting">Македонски</a>,</td></tr> <tr><td><a href="/book/pl/v2/Appendix-C:-Git-Commands-Basic-Snapshotting">Polski</a>,</td></tr> <tr><td><a href="/book/sr/v2/%d0%94%d0%be%d0%b4%d0%b0%d1%82%d0%b0%d0%ba-%d0%92:-%d0%93%d0%b8%d1%82-%d0%ba%d0%be%d0%bc%d0%b0%d0%bd%d0%b4%d0%b5-%d0%9e%d1%81%d0%bd%d0%be%d0%b2%d0%bd%d0%be-%d1%81%d0%bd%d0%b8%d0%bc%d0%b0%d1%9a%d0%b5">Српски</a>,</td></tr> <tr><td><a href="/book/uz/v2/Appendix-C:-Git-Commands-Basic-Snapshotting">Ўзбекча</a>,</td></tr> <tr><td><a href="/book/zh-tw/v2/%e9%99%84%e9%8c%84-C:-Git-Commands-Basic-Snapshotting">繁體中文</a>,</td></tr> </table> </p> <p> Translations started for <table> <tr><td><a href="/book/be/v2/%d0%94%d0%b0%d0%b4%d0%b0%d1%82%d0%b0%d0%ba-C:-Git-Commands-Basic-Snapshotting">Беларуская</a>,</td></tr> <tr><td><a href="/book/fa/v2/%d9%be%db%8c%d9%88%d8%b3%d8%aa-C:-Git-Commands-Basic-Snapshotting" dir="rtl">فارسی</a>,</td></tr> <tr><td><a href="/book/id/v2/Appendix-C:-Git-Commands-Basic-Snapshotting">Indonesian</a>,</td></tr> <tr><td><a href="/book/it/v2/Appendice-C:-Git-Commands-Basic-Snapshotting">Italiano</a>,</td></tr> <tr><td><a href="/book/ms/v2/Appendix-C:-Git-Commands-Basic-Snapshotting">Bahasa Melayu</a>,</td></tr> <tr><td><a href="/book/pt-br/v2/Appendix-C:-Git-Commands-Basic-Snapshotting">Português (Brasil)</a>,</td></tr> <tr><td><a href="/book/pt-pt/v2/Appendix-C:-Git-Commands-Basic-Snapshotting">Português (Portugal)</a>,</td></tr> <tr><td><a href="/book/sv/v2/Bilaga-C:-Git-Commands-Basic-Snapshotting">Svenska</a>,</td></tr> <tr><td><a href="/book/tr/v2/Ek-b%c3%b6l%c3%bcm-C:-Git-Komutlar%c4%b1-K%c4%b1saca-Poz-Snapshot-Alma">Türkçe</a>.</td></tr> </table> </p> <hr class="sidebar"/> <p> The source of this book is <a href="https://github.com/progit2-ms/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/ms/v2/Getting-Started-About-Version-Control">Getting Started</a></h2> <ol> <li> 1.1 <a href="/book/ms/v2/Getting-Started-About-Version-Control">About Version Control</a> </li> <li> 1.2 <a href="/book/ms/v2/Getting-Started-A-Short-History-of-Git">A Short History of Git</a> </li> <li> 1.3 <a href="/book/ms/v2/Getting-Started-What-is-Git%3F">What is Git?</a> </li> <li> 1.4 <a href="/book/ms/v2/Getting-Started-The-Command-Line">The Command Line</a> </li> <li> 1.5 <a href="/book/ms/v2/Getting-Started-Installing-Git">Installing Git</a> </li> <li> 1.6 <a href="/book/ms/v2/Getting-Started-First-Time-Git-Setup">First-Time Git Setup</a> </li> <li> 1.7 <a href="/book/ms/v2/Getting-Started-Getting-Help">Getting Help</a> </li> <li> 1.8 <a href="/book/ms/v2/Getting-Started-Summary">Summary</a> </li> </ol> </li> <li class='chapter'> <h2>2. <a href="/book/ms/v2/Git-Basics-Getting-a-Git-Repository">Git Basics</a></h2> <ol> <li> 2.1 <a href="/book/ms/v2/Git-Basics-Getting-a-Git-Repository">Getting a Git Repository</a> </li> <li> 2.2 <a href="/book/ms/v2/Git-Basics-Recording-Changes-to-the-Repository">Recording Changes to the Repository</a> </li> <li> 2.3 <a href="/book/ms/v2/Git-Basics-Viewing-the-Commit-History">Viewing the Commit History</a> </li> <li> 2.4 <a href="/book/ms/v2/Git-Basics-Undoing-Things">Undoing Things</a> </li> <li> 2.5 <a href="/book/ms/v2/Git-Basics-Working-with-Remotes">Working with Remotes</a> </li> <li> 2.6 <a href="/book/ms/v2/Git-Basics-Tagging">Tagging</a> </li> <li> 2.7 <a href="/book/ms/v2/Git-Basics-Git-Aliases">Git Aliases</a> </li> <li> 2.8 <a href="/book/ms/v2/Git-Basics-Summary">Summary</a> </li> </ol> </li> <li class='chapter'> <h2>3. <a href="/book/ms/v2/Git-Branching-Branches-in-a-Nutshell">Git Branching</a></h2> <ol> <li> 3.1 <a href="/book/ms/v2/Git-Branching-Branches-in-a-Nutshell">Branches in a Nutshell</a> </li> <li> 3.2 <a href="/book/ms/v2/Git-Branching-Basic-Branching-and-Merging">Basic Branching and Merging</a> </li> <li> 3.3 <a href="/book/ms/v2/Git-Branching-Branch-Management">Branch Management</a> </li> <li> 3.4 <a href="/book/ms/v2/Git-Branching-Branching-Workflows">Branching Workflows</a> </li> <li> 3.5 <a href="/book/ms/v2/Git-Branching-Remote-Branches">Remote Branches</a> </li> <li> 3.6 <a href="/book/ms/v2/Git-Branching-Rebasing">Rebasing</a> </li> <li> 3.7 <a href="/book/ms/v2/Git-Branching-Summary">Summary</a> </li> </ol> </li> <li class='chapter'> <h2>4. <a href="/book/ms/v2/Git-on-the-Server-The-Protocols">Git on the Server</a></h2> <ol> <li> 4.1 <a href="/book/ms/v2/Git-on-the-Server-The-Protocols">The Protocols</a> </li> <li> 4.2 <a href="/book/ms/v2/Git-on-the-Server-Getting-Git-on-a-Server">Getting Git on a Server</a> </li> <li> 4.3 <a href="/book/ms/v2/Git-on-the-Server-Generating-Your-SSH-Public-Key">Generating Your SSH Public Key</a> </li> <li> 4.4 <a href="/book/ms/v2/Git-on-the-Server-Setting-Up-the-Server">Setting Up the Server</a> </li> <li> 4.5 <a href="/book/ms/v2/Git-on-the-Server-Git-Daemon">Git Daemon</a> </li> <li> 4.6 <a href="/book/ms/v2/Git-on-the-Server-Smart-HTTP">Smart HTTP</a> </li> <li> 4.7 <a href="/book/ms/v2/Git-on-the-Server-GitWeb">GitWeb</a> </li> <li> 4.8 <a href="/book/ms/v2/Git-on-the-Server-GitLab">GitLab</a> </li> <li> 4.9 <a href="/book/ms/v2/Git-on-the-Server-Third-Party-Hosted-Options">Third Party Hosted Options</a> </li> <li> 4.10 <a href="/book/ms/v2/Git-on-the-Server-Summary">Summary</a> </li> </ol> </li> <li class='chapter'> <h2>5. <a href="/book/ms/v2/Distributed-Git-Distributed-Workflows">Distributed Git</a></h2> <ol> <li> 5.1 <a href="/book/ms/v2/Distributed-Git-Distributed-Workflows">Distributed Workflows</a> </li> <li> 5.2 <a href="/book/ms/v2/Distributed-Git-Contributing-to-a-Project">Contributing to a Project</a> </li> <li> 5.3 <a href="/book/ms/v2/Distributed-Git-Maintaining-a-Project">Maintaining a Project</a> </li> <li> 5.4 <a href="/book/ms/v2/Distributed-Git-Summary">Summary</a> </li> </ol> </li> </ol> </div> <div class='column-middle'> <ol class='book-toc'> <li class='chapter'> <h2>6. <a href="/book/ms/v2/GitHub-Account-Setup-and-Configuration">GitHub</a></h2> <ol> <li> 6.1 <a href="/book/ms/v2/GitHub-Account-Setup-and-Configuration">Account Setup and Configuration</a> </li> <li> 6.2 <a href="/book/ms/v2/GitHub-Contributing-to-a-Project">Contributing to a Project</a> </li> <li> 6.3 <a href="/book/ms/v2/GitHub-Maintaining-a-Project">Maintaining a Project</a> </li> <li> 6.4 <a href="/book/ms/v2/GitHub-Managing-an-organization">Managing an organization</a> </li> <li> 6.5 <a href="/book/ms/v2/GitHub-Scripting-GitHub">Scripting GitHub</a> </li> <li> 6.6 <a href="/book/ms/v2/GitHub-Summary">Summary</a> </li> </ol> </li> <li class='chapter'> <h2>7. <a href="/book/ms/v2/Git-Tools-Revision-Selection">Git Tools</a></h2> <ol> <li> 7.1 <a href="/book/ms/v2/Git-Tools-Revision-Selection">Revision Selection</a> </li> <li> 7.2 <a href="/book/ms/v2/Git-Tools-Interactive-Staging">Interactive Staging</a> </li> <li> 7.3 <a href="/book/ms/v2/Git-Tools-Stashing-and-Cleaning">Stashing and Cleaning</a> </li> <li> 7.4 <a href="/book/ms/v2/Git-Tools-Signing-Your-Work">Signing Your Work</a> </li> <li> 7.5 <a href="/book/ms/v2/Git-Tools-Searching">Searching</a> </li> <li> 7.6 <a href="/book/ms/v2/Git-Tools-Rewriting-History">Rewriting History</a> </li> <li> 7.7 <a href="/book/ms/v2/Git-Tools-Reset-Demystified">Reset Demystified</a> </li> <li> 7.8 <a href="/book/ms/v2/Git-Tools-Advanced-Merging">Advanced Merging</a> </li> <li> 7.9 <a href="/book/ms/v2/Git-Tools-Rerere">Rerere</a> </li> <li> 7.10 <a href="/book/ms/v2/Git-Tools-Debugging-with-Git">Debugging with Git</a> </li> <li> 7.11 <a href="/book/ms/v2/Git-Tools-Submodules">Submodules</a> </li> <li> 7.12 <a href="/book/ms/v2/Git-Tools-Bundling">Bundling</a> </li> <li> 7.13 <a href="/book/ms/v2/Git-Tools-Replace">Replace</a> </li> <li> 7.14 <a href="/book/ms/v2/Git-Tools-Credential-Storage">Credential Storage</a> </li> <li> 7.15 <a href="/book/ms/v2/Git-Tools-Summary">Summary</a> </li> </ol> </li> <li class='chapter'> <h2>8. <a href="/book/ms/v2/Customizing-Git-Git-Configuration">Customizing Git</a></h2> <ol> <li> 8.1 <a href="/book/ms/v2/Customizing-Git-Git-Configuration">Git Configuration</a> </li> <li> 8.2 <a href="/book/ms/v2/Customizing-Git-Git-Attributes">Git Attributes</a> </li> <li> 8.3 <a href="/book/ms/v2/Customizing-Git-Git-Hooks">Git Hooks</a> </li> <li> 8.4 <a href="/book/ms/v2/Customizing-Git-An-Example-Git-Enforced-Policy">An Example Git-Enforced Policy</a> </li> <li> 8.5 <a href="/book/ms/v2/Customizing-Git-Summary">Summary</a> </li> </ol> </li> <li class='chapter'> <h2>9. <a href="/book/ms/v2/Git-and-Other-Systems-Git-as-a-Client">Git and Other Systems</a></h2> <ol> <li> 9.1 <a href="/book/ms/v2/Git-and-Other-Systems-Git-as-a-Client">Git as a Client</a> </li> <li> 9.2 <a href="/book/ms/v2/Git-and-Other-Systems-Migrating-to-Git">Migrating to Git</a> </li> <li> 9.3 <a href="/book/ms/v2/Git-and-Other-Systems-Summary">Summary</a> </li> </ol> </li> <li class='chapter'> <h2>10. <a href="/book/ms/v2/Git-Internals-Plumbing-and-Porcelain">Git Internals</a></h2> <ol> <li> 10.1 <a href="/book/ms/v2/Git-Internals-Plumbing-and-Porcelain">Plumbing and Porcelain</a> </li> <li> 10.2 <a href="/book/ms/v2/Git-Internals-Git-Objects">Git Objects</a> </li> <li> 10.3 <a href="/book/ms/v2/Git-Internals-Git-References">Git References</a> </li> <li> 10.4 <a href="/book/ms/v2/Git-Internals-Packfiles">Packfiles</a> </li> <li> 10.5 <a href="/book/ms/v2/Git-Internals-The-Refspec">The Refspec</a> </li> <li> 10.6 <a href="/book/ms/v2/Git-Internals-Transfer-Protocols">Transfer Protocols</a> </li> <li> 10.7 <a href="/book/ms/v2/Git-Internals-Maintenance-and-Data-Recovery">Maintenance and Data Recovery</a> </li> <li> 10.8 <a href="/book/ms/v2/Git-Internals-Environment-Variables">Environment Variables</a> </li> <li> 10.9 <a href="/book/ms/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/ms/v2/Appendix-A:-Git-in-Other-Environments-Graphical-Interfaces">Appendix A: Git in Other Environments</a></h2> <ol> <li> A1.1 <a href="/book/ms/v2/Appendix-A:-Git-in-Other-Environments-Graphical-Interfaces">Graphical Interfaces</a> </li> <li> A1.2 <a href="/book/ms/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Visual-Studio">Git in Visual Studio</a> </li> <li> A1.3 <a href="/book/ms/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Visual-Studio-Code">Git in Visual Studio Code</a> </li> <li> A1.4 <a href="/book/ms/v2/Appendix-A:-Git-in-Other-Environments-Git-in-IntelliJ-/-PyCharm-/-WebStorm-/-PhpStorm-/-RubyMine">Git in IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine</a> </li> <li> A1.5 <a href="/book/ms/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Sublime-Text">Git in Sublime Text</a> </li> <li> A1.6 <a href="/book/ms/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Bash">Git in Bash</a> </li> <li> A1.7 <a href="/book/ms/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Zsh">Git in Zsh</a> </li> <li> A1.8 <a href="/book/ms/v2/Appendix-A:-Git-in-Other-Environments-Git-in-PowerShell">Git in PowerShell</a> </li> <li> A1.9 <a href="/book/ms/v2/Appendix-A:-Git-in-Other-Environments-Summary">Summary</a> </li> </ol> </li> <li class='chapter'> <h2>A2. <a href="/book/ms/v2/Appendix-B:-Embedding-Git-in-your-Applications-Command-line-Git">Appendix B: Embedding Git in your Applications</a></h2> <ol> <li> A2.1 <a href="/book/ms/v2/Appendix-B:-Embedding-Git-in-your-Applications-Command-line-Git">Command-line Git</a> </li> <li> A2.2 <a href="/book/ms/v2/Appendix-B:-Embedding-Git-in-your-Applications-Libgit2">Libgit2</a> </li> <li> A2.3 <a href="/book/ms/v2/Appendix-B:-Embedding-Git-in-your-Applications-JGit">JGit</a> </li> <li> A2.4 <a href="/book/ms/v2/Appendix-B:-Embedding-Git-in-your-Applications-go-git">go-git</a> </li> <li> A2.5 <a href="/book/ms/v2/Appendix-B:-Embedding-Git-in-your-Applications-Dulwich">Dulwich</a> </li> </ol> </li> <li class='chapter'> <h2>A3. <a href="/book/ms/v2/Appendix-C:-Git-Commands-Setup-and-Config">Appendix C: Git Commands</a></h2> <ol> <li> A3.1 <a href="/book/ms/v2/Appendix-C:-Git-Commands-Setup-and-Config">Setup and Config</a> </li> <li> A3.2 <a href="/book/ms/v2/Appendix-C:-Git-Commands-Getting-and-Creating-Projects">Getting and Creating Projects</a> </li> <li> A3.3 <a href="/book/ms/v2/Appendix-C:-Git-Commands-Basic-Snapshotting" class="active">Basic Snapshotting</a> </li> <li> A3.4 <a href="/book/ms/v2/Appendix-C:-Git-Commands-Branching-and-Merging">Branching and Merging</a> </li> <li> A3.5 <a href="/book/ms/v2/Appendix-C:-Git-Commands-Sharing-and-Updating-Projects">Sharing and Updating Projects</a> </li> <li> A3.6 <a href="/book/ms/v2/Appendix-C:-Git-Commands-Inspection-and-Comparison">Inspection and Comparison</a> </li> <li> A3.7 <a href="/book/ms/v2/Appendix-C:-Git-Commands-Debugging">Debugging</a> </li> <li> A3.8 <a href="/book/ms/v2/Appendix-C:-Git-Commands-Patching">Patching</a> </li> <li> A3.9 <a href="/book/ms/v2/Appendix-C:-Git-Commands-Email">Email</a> </li> <li> A3.10 <a href="/book/ms/v2/Appendix-C:-Git-Commands-External-Systems">External Systems</a> </li> <li> A3.11 <a href="/book/ms/v2/Appendix-C:-Git-Commands-Administration">Administration</a> </li> <li> A3.12 <a href="/book/ms/v2/Appendix-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>A3.3 Appendix C: Git Commands - Basic Snapshotting</h1> <div> <h2 id="_basic_snapshotting">Basic Snapshotting</h2> <div class="paragraph"> <p>For the basic workflow of staging content and committing it to your history, there are only a few basic commands.</p> </div> <div class="sect3"> <h3 id="_git_add">git add</h3> <div class="paragraph"> <p>The <code>git add</code> command adds content from the working directory into the staging area (or “index”) for the next commit. When the <code>git commit</code> command is run, by default it only looks at this staging area, so <code>git add</code> is used to craft what exactly you would like your next commit snapshot to look like.</p> </div> <div class="paragraph"> <p>This command is an incredibly important command in Git and is mentioned or used dozens of times in this book. We’ll quickly cover some of the unique uses that can be found.</p> </div> <div class="paragraph"> <p>We first introduce and explain <code>git add</code> in detail in <a href="/book/ms/v2/ch00/_tracking_files">Tracking New Files</a>.</p> </div> <div class="paragraph"> <p>We mention how to use it to resolve merge conflicts in <a href="/book/ms/v2/ch00/_basic_merge_conflicts">Basic Merge Conflicts</a>.</p> </div> <div class="paragraph"> <p>We go over using it to interactively stage only specific parts of a modified file in <a href="/book/ms/v2/ch00/_interactive_staging">Interactive Staging</a>.</p> </div> <div class="paragraph"> <p>Finally, we emulate it at a low level in <a href="/book/ms/v2/ch00/_tree_objects">Tree Objects</a>, so you can get an idea of what it’s doing behind the scenes.</p> </div> </div> <div class="sect3"> <h3 id="_git_status">git status</h3> <div class="paragraph"> <p>The <code>git status</code> command will show you the different states of files in your working directory and staging area. Which files are modified and unstaged and which are staged but not yet committed. In its normal form, it also will show you some basic hints on how to move files between these stages.</p> </div> <div class="paragraph"> <p>We first cover <code>status</code> in <a href="/book/ms/v2/ch00/_checking_status">Checking the Status of Your Files</a>, both in its basic and simplified forms. While we use it throughout the book, pretty much everything you can do with the <code>git status</code> command is covered there.</p> </div> </div> <div class="sect3"> <h3 id="_git_diff">git diff</h3> <div class="paragraph"> <p>The <code>git diff</code> command is used when you want to see differences between any two trees. This could be the difference between your working environment and your staging area (<code>git diff</code> by itself), between your staging area and your last commit (<code>git diff --staged</code>), or between two commits (<code>git diff master branchB</code>).</p> </div> <div class="paragraph"> <p>We first look at the basic uses of <code>git diff</code> in <a href="/book/ms/v2/ch00/_git_diff_staged">Viewing Your Staged and Unstaged Changes</a>, where we show how to see what changes are staged and which are not yet staged.</p> </div> <div class="paragraph"> <p>We use it to look for possible whitespace issues before committing with the <code>--check</code> option in <a href="/book/ms/v2/ch00/_commit_guidelines">Commit Guidelines</a>.</p> </div> <div class="paragraph"> <p>We see how to check the differences between branches more effectively with the <code>git diff A…B</code> syntax in <a href="/book/ms/v2/ch00/_what_is_introduced">Determining What Is Introduced</a>.</p> </div> <div class="paragraph"> <p>We use it to filter out whitespace differences with <code>-b</code> and how to compare different stages of conflicted files with <code>--theirs</code>, <code>--ours</code> and <code>--base</code> in <a href="/book/ms/v2/ch00/_advanced_merging">Advanced Merging</a>.</p> </div> <div class="paragraph"> <p>Finally, we use it to effectively compare submodule changes with <code>--submodule</code> in <a href="/book/ms/v2/ch00/_starting_submodules">Starting with Submodules</a>.</p> </div> </div> <div class="sect3"> <h3 id="_git_difftool">git difftool</h3> <div class="paragraph"> <p>The <code>git difftool</code> command simply launches an external tool to show you the difference between two trees in case you want to use something other than the built in <code>git diff</code> command.</p> </div> <div class="paragraph"> <p>We only briefly mention this in <a href="/book/ms/v2/ch00/_git_diff_staged">Viewing Your Staged and Unstaged Changes</a>.</p> </div> </div> <div class="sect3"> <h3 id="_git_commit">git commit</h3> <div class="paragraph"> <p>The <code>git commit</code> command takes all the file contents that have been staged with <code>git add</code> and records a new permanent snapshot in the database and then moves the branch pointer on the current branch up to it.</p> </div> <div class="paragraph"> <p>We first cover the basics of committing in <a href="/book/ms/v2/ch00/_committing_changes">Committing Your Changes</a>. There we also demonstrate how to use the <code>-a</code> flag to skip the <code>git add</code> step in daily workflows and how to use the <code>-m</code> flag to pass a commit message in on the command line instead of firing up an editor.</p> </div> <div class="paragraph"> <p>In <a href="/book/ms/v2/ch00/_undoing">Undoing Things</a> we cover using the <code>--amend</code> option to redo the most recent commit.</p> </div> <div class="paragraph"> <p>In <a href="/book/ms/v2/ch00/_git_branches_overview">Branches in a Nutshell</a>, we go into much more detail about what <code>git commit</code> does and why it does it like that.</p> </div> <div class="paragraph"> <p>We looked at how to sign commits cryptographically with the <code>-S</code> flag in <a href="/book/ms/v2/ch00/_signing_commits">Signing Commits</a>.</p> </div> <div class="paragraph"> <p>Finally, we take a look at what the <code>git commit</code> command does in the background and how it’s actually implemented in <a href="/book/ms/v2/ch00/_git_commit_objects">Commit Objects</a>.</p> </div> </div> <div class="sect3"> <h3 id="_git_reset_2">git reset</h3> <div class="paragraph"> <p>The <code>git reset</code> command is primarily used to undo things, as you can possibly tell by the verb. It moves around the <code>HEAD</code> pointer and optionally changes the <code>index</code> or staging area and can also optionally change the working directory if you use <code>--hard</code>. This final option makes it possible for this command to lose your work if used incorrectly, so make sure you understand it before using it.</p> </div> <div class="paragraph"> <p>We first effectively cover the simplest use of <code>git reset</code> in <a href="/book/ms/v2/ch00/_unstaging">Unstaging a Staged File</a>, where we use it to unstage a file we had run <code>git add</code> on.</p> </div> <div class="paragraph"> <p>We then cover it in quite some detail in <a href="/book/ms/v2/ch00/_git_reset">Reset Demystified</a>, which is entirely devoted to explaining this command.</p> </div> <div class="paragraph"> <p>We use <code>git reset --hard</code> to abort a merge in <a href="/book/ms/v2/ch00/_abort_merge">Aborting a Merge</a>, where we also use <code>git merge --abort</code>, which is a bit of a wrapper for the <code>git reset</code> command.</p> </div> </div> <div class="sect3"> <h3 id="_git_rm">git rm</h3> <div class="paragraph"> <p>The <code>git rm</code> command is used to remove files from the staging area and working directory for Git. It is similar to <code>git add</code> in that it stages a removal of a file for the next commit.</p> </div> <div class="paragraph"> <p>We cover the <code>git rm</code> command in some detail in <a href="/book/ms/v2/ch00/_removing_files">Removing Files</a>, including recursively removing files and only removing files from the staging area but leaving them in the working directory with <code>--cached</code>.</p> </div> <div class="paragraph"> <p>The only other differing use of <code>git rm</code> in the book is in <a href="/book/ms/v2/ch00/_removing_objects">Removing Objects</a> where we briefly use and explain the <code>--ignore-unmatch</code> when running <code>git filter-branch</code>, which simply makes it not error out when the file we are trying to remove doesn’t exist. This can be useful for scripting purposes.</p> </div> </div> <div class="sect3"> <h3 id="_git_mv_2">git mv</h3> <div class="paragraph"> <p>The <code>git mv</code> command is a thin convenience command to move a file and then run <code>git add</code> on the new file and <code>git rm</code> on the old file.</p> </div> <div class="paragraph"> <p>We only briefly mention this command in <a href="/book/ms/v2/ch00/_git_mv">Moving Files</a>.</p> </div> </div> <div class="sect3"> <h3 id="_git_clean_2">git clean</h3> <div class="paragraph"> <p>The <code>git clean</code> command is used to remove unwanted files from your working directory. This could include removing temporary build artifacts or merge conflict files.</p> </div> <div class="paragraph"> <p>We cover many of the options and scenarios in which you might used the clean command in <a href="/book/ms/v2/ch00/_git_clean">Cleaning your Working Directory</a>.</p> </div> </div> <div id="nav"><a href="/book/ms/v2/Appendix-C:-Git-Commands-Getting-and-Creating-Projects">prev</a> | <a href="/book/ms/v2/Appendix-C:-Git-Commands-Branching-and-Merging">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>