CINXE.COM

最常用的 35 个 Git 命令 - Pdone's Blog

<!DOCTYPE html> <html lang="zh-CN" data-default-color-scheme=dark> <head> <meta charset="UTF-8"> <link rel="apple-touch-icon" sizes="76x76" href="/favicon.ico"> <link rel="icon" href="/favicon.ico"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0, shrink-to-fit=no"> <meta http-equiv="x-ua-compatible" content="ie=edge"> <meta name="theme-color" content="#2f4154"> <meta name="author" content="pdone"> <meta name="keywords" content="pdone,Hexo,C++,C#,developer,vue"> <meta name="description" content="不管你是新手还是经验丰富的开发人员,都需要使用源代码管理。因此很大几率上你会选择使用Git来管理源代码。 要发挥Git的全部潜力,我们需要了解Git命令。在本文中,你将学到最有用的一些Git命令,掌握这些Git命令将帮助你提升编码水平。"> <meta property="og:type" content="article"> <meta property="og:title" content="最常用的 35 个 Git 命令"> <meta property="og:url" content="https://awaw.cc/post/git-command/"> <meta property="og:site_name" content="Pdone&#39;s Blog"> <meta property="og:description" content="不管你是新手还是经验丰富的开发人员,都需要使用源代码管理。因此很大几率上你会选择使用Git来管理源代码。 要发挥Git的全部潜力,我们需要了解Git命令。在本文中,你将学到最有用的一些Git命令,掌握这些Git命令将帮助你提升编码水平。"> <meta property="og:locale" content="zh_CN"> <meta property="article:published_time" content="2021-05-20T16:00:00.000Z"> <meta property="article:modified_time" content="2023-07-04T03:58:52.572Z"> <meta property="article:author" content="pdone"> <meta property="article:tag" content="Git"> <meta name="twitter:card" content="summary_large_image"> <meta name="referrer" content="no-referrer-when-downgrade"> <title>最常用的 35 个 Git 命令 - Pdone&#39;s Blog</title> <link rel="stylesheet" href="https://lib.baomitu.com/twitter-bootstrap/4.6.1/css/bootstrap.min.css" /> <link rel="stylesheet" href="https://lib.baomitu.com/github-markdown-css/4.0.0/github-markdown.min.css" /> <link rel="stylesheet" href="https://lib.baomitu.com/hint.css/2.7.0/hint.min.css" /> <link rel="stylesheet" href="https://lib.baomitu.com/fancybox/3.5.7/jquery.fancybox.min.css" /> <!-- 主题依赖的图标库,不要自行修改 --> <!-- Do not modify the link that theme dependent icons --> <link rel="stylesheet" href="//at.alicdn.com/t/font_1749284_hj8rtnfg7um.css"> <link rel="stylesheet" href="//at.alicdn.com/t/font_1736178_lbnruvf0jn.css"> <link rel="stylesheet" href="/css/main.css" /> <link id="highlight-css" rel="stylesheet" href="/css/highlight.css" /> <link id="highlight-css-dark" rel="stylesheet" href="/css/highlight-dark.css" /> <script id="fluid-configs"> var Fluid = window.Fluid || {}; Fluid.ctx = Object.assign({}, Fluid.ctx) var CONFIG = {"hostname":"awaw.cc","root":"/","version":"1.9.7","typing":{"enable":true,"typeSpeed":70,"cursorChar":"_","loop":false,"scope":["home","post"]},"anchorjs":{"enable":true,"element":"h1,h2,h3,h4,h5,h6","placement":"left","visible":"hover","icon":"#"},"progressbar":{"enable":true,"height_px":3,"color":"#29d","options":{"showSpinner":false,"trickleSpeed":100}},"code_language":{"enable":true,"default":"TEXT"},"copy_btn":true,"image_caption":{"enable":true},"image_zoom":{"enable":true,"img_url_replace":["",""]},"toc":{"enable":true,"placement":"right","headingSelector":"h1,h2,h3,h4,h5,h6","collapseDepth":2},"lazyload":{"enable":true,"loading_img":"/loading.svg","onlypost":false,"offset_factor":2},"web_analytics":{"enable":true,"follow_dnt":true,"baidu":"def79bf7d2240517f4fcbd4d5b9fa688","google":{"measurement_id":null},"tencent":{"sid":null,"cid":null},"woyaola":21715279,"cnzz":null,"leancloud":{"app_id":null,"app_key":null,"server_url":null,"path":"window.location.pathname","ignore_local":false}},"search_path":"/local-search.xml","include_content_in_search":true}; if (CONFIG.web_analytics.follow_dnt) { var dntVal = navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack; Fluid.ctx.dnt = dntVal && (dntVal.startsWith('1') || dntVal.startsWith('yes') || dntVal.startsWith('on')); } </script> <script src="/js/utils.js" ></script> <script src="/js/color-schema.js" ></script> <!-- Baidu Analytics --> <script async> if (!Fluid.ctx.dnt) { var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?def79bf7d2240517f4fcbd4d5b9fa688"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); } </script> <!-- Google tag (gtag.js) --> <script async> if (!Fluid.ctx.dnt) { Fluid.utils.createScript("https://www.googletagmanager.com/gtag/js?id=", function() { window.dataLayer = window.dataLayer || []; function gtag() { dataLayer.push(arguments); } gtag('js', new Date()); gtag('config', ''); }); } </script> <!-- 51.la Analytics --> <script async> if (!Fluid.ctx.dnt) { Fluid.utils.createScript('//js.users.51.la/21715279.js'); } </script> <!-- hexo injector head_end start --> <link rel="stylesheet" href="/assets/custom.css"> <link rel="stylesheet" href="/assets/font-awesome.min.css"> <!-- hexo injector head_end end --><meta name="generator" content="Hexo 6.3.0"><link rel="alternate" href="/atom.xml" title="Pdone's Blog" type="application/atom+xml"> </head> <body> <header> <div class="header-inner" style="height: 70vh;"> <nav id="navbar" class="navbar fixed-top navbar-expand-lg navbar-dark scrolling-navbar"> <div class="container"> <a class="navbar-brand" href="/"> <strong>Pdone&#39;s Blog</strong> </a> <button id="navbar-toggler-btn" class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <div class="animated-icon"><span></span><span></span><span></span></div> </button> <!-- Collapsible content --> <div class="collapse navbar-collapse" id="navbarSupportedContent"> <ul class="navbar-nav ml-auto text-center"> <li class="nav-item"> <a class="nav-link" href="/" target="_self"> <i class="iconfont icon-home-fill"></i> <span>Home</span> </a> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" target="_self" href="javascript:;" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <i class="fa fa-folder"></i> <span>Archive</span> </a> <div class="dropdown-menu" aria-labelledby="navbarDropdown"> <a class="dropdown-item" href="/archives/" target="_self"> <i class="iconfont icon-archive-fill"></i> <span>归档</span> </a> <a class="dropdown-item" href="/categories/" target="_self"> <i class="iconfont icon-category-fill"></i> <span>分类</span> </a> <a class="dropdown-item" href="/tags/" target="_self"> <i class="fa fa-tags"></i> <span>标签</span> </a> </div> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" target="_self" href="javascript:;" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <i class="fa fa-wrench"></i> <span>Tools</span> </a> <div class="dropdown-menu" aria-labelledby="navbarDropdown"> <a class="dropdown-item" href="/tools/eat-what-today/" target="_self"> <i class="fa fa-cutlery"></i> <span>今天吃什么</span> </a> <a class="dropdown-item" href="/tools/catch-the-cat/" target="_self"> <i class="fa fa-github-alt"></i> <span>捉住小猫</span> </a> <a class="dropdown-item" href="/tools/pwd-generator/" target="_self"> <i class="fa fa-shield"></i> <span>密码生成器</span> </a> <a class="dropdown-item" href="/tools/md-editor/" target="_self"> <i class="fa fa-edit"></i> <span>MD编辑器</span> </a> <a class="dropdown-item" href="/tools/swing-girl/" target="_self"> <i class="fa fa-pagelines"></i> <span>荡秋千</span> </a> <a class="dropdown-item" href="/tools/planet/" target="_self"> <i class="fa fa-superpowers"></i> <span>星球</span> </a> <a class="dropdown-item" href="https://aria.awaw.cc" target="_self"> <i class="fa fa-rocket"></i> <span>AriaNg</span> </a> </div> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" target="_self" href="javascript:;" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <i class="fa fa-superpowers"></i> <span>AI</span> </a> <div class="dropdown-menu" aria-labelledby="navbarDropdown"> <a class="dropdown-item" href="https://chatgpt.com/" target="_self"> <span>ChatGPT</span> </a> <a class="dropdown-item" href="https://yiyan.baidu.com/" target="_self"> <span>文心一言</span> </a> <a class="dropdown-item" href="https://tongyi.aliyun.com/qianwen/" target="_self"> <span>通义千问</span> </a> <a class="dropdown-item" href="https://yuanbao.tencent.com/" target="_self"> <span>腾讯元宝</span> </a> </div> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" target="_self" href="javascript:;" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <i class="fa fa-asterisk"></i> <span>More</span> </a> <div class="dropdown-menu" aria-labelledby="navbarDropdown"> <a class="dropdown-item" href="/links/" target="_self"> <i class="iconfont icon-link-fill"></i> <span>友链</span> </a> <a class="dropdown-item" href="/about/" target="_self"> <i class="iconfont icon-user-fill"></i> <span>关于</span> </a> </div> </li> <li class="nav-item" id="search-btn"> <a class="nav-link" target="_self" href="javascript:;" data-toggle="modal" data-target="#modalSearch" aria-label="Search"> <i class="iconfont icon-search"></i> </a> </li> <li class="nav-item" id="color-toggle-btn"> <a class="nav-link" target="_self" href="javascript:;" aria-label="Color Toggle"> <i class="iconfont icon-dark" id="color-toggle-icon"></i> </a> </li> </ul> </div> </div> </nav> <div id="banner" class="banner" parallax=true style="background: url('/') no-repeat center center; background-size: cover;"> <div class="full-bg-img"> <div class="mask flex-center" style="background-color: rgba(0, 0, 0, 0)"> <div class="banner-text text-center fade-in-up"> <div class="h2"> <span id="subtitle" data-typed-text="最常用的 35 个 Git 命令"></span> </div> <div class="mt-3"> </div> <div class="mt-1"> <span class="post-meta mr-2"> <i class="iconfont icon-chart"></i> 2.3k 字 </span> <span class="post-meta mr-2"> <i class="iconfont icon-clock-fill"></i> 20 分钟 </span> <span id="busuanzi_container_page_pv" style="display: none"> <i class="iconfont icon-eye" aria-hidden="true"></i> <span id="busuanzi_value_page_pv"></span> 次 </span> </div> </div> </div> </div> </div> </div> </header> <main> <div class="container-fluid nopadding-x"> <div class="row nomargin-x"> <div class="side-col d-none d-lg-block col-lg-2"> </div> <div class="col-lg-8 nopadding-x-md"> <div class="container nopadding-x-md" id="board-ctn"> <div id="board"> <article class="post-content mx-auto"> <h1 id="seo-header">最常用的 35 个 Git 命令</h1> <div class="markdown-body"> <p>不管你是新手还是经验丰富的开发人员,都需要使用源代码管理。因此很大几率上你会选择使用Git来管理源代码。</p> <p>要发挥Git的全部潜力,我们需要了解Git命令。在本文中,你将学到最有用的一些Git命令,掌握这些Git命令将帮助你提升编码水平。</p> <span id="more"></span> <p>本Git命令指南共分为三个部分:基础命令,进阶命令和高阶Git命令。</p> <h2 id="基础Git命令"><a href="#基础Git命令" class="headerlink" title="基础Git命令"></a>基础Git命令</h2><p>在这个部分中,我们要学习的是一些非常基础的Git命令。这些基础的Git命令是学习其他进阶命令的基础。</p> <p>下面请看这9个基础的Git命令。</p> <h3 id="1-git-config"><a href="#1-git-config" class="headerlink" title="1. git config"></a>1. git config</h3><p><code>git config</code>命令非常有用。尤其是在你第一次使用Git或刚安装新的Git时。此命令可设置身份——Name和Email地址。并且每次提交时会使用此信息。</p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git config --global user.name <span class="hljs-string">&quot;Your name&quot;</span> <br><br>$ git config --global user.email <span class="hljs-string">&quot;Your email&quot;</span><br></code></pre></td></tr></table></figure> <h3 id="2-git-version"><a href="#2-git-version" class="headerlink" title="2. git version"></a>2. git version</h3><p>顾名思义,它会检查你使用的是哪个版本的Git。目前,截至编写本指南时,Git for Windows的最新版本是2.31.1。它发布于2021年3月27日。</p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git version<br></code></pre></td></tr></table></figure> <h3 id="3-git-init"><a href="#3-git-init" class="headerlink" title="3. git init"></a>3. git init</h3><p>这可能是你在Git中启动新项目所使用的第一个命令。此命令将创建一个空白的新存储库,然后你可以将源代码存储在此存储库中。</p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git init<br></code></pre></td></tr></table></figure> <p>或者,你也可以在<code>git init</code>命令中使用存储库名称。</p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git init &lt;your repository name&gt;<br></code></pre></td></tr></table></figure> <h3 id="4-git-clone"><a href="#4-git-clone" class="headerlink" title="4. git clone"></a>4. git clone</h3><p><code>git clone</code>命令将使用现有的存储库进行复制。<code>git init</code>和<code>git clone</code>之间有一个主要区别。</p> <p>在你需要在现有的存储库上进行复制时,使用<code>git clone</code>。<code>git clone</code>命令首先在内部使用<code>git init</code>命令,然后检出所有内容。</p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">git <span class="hljs-built_in">clone</span> &lt;your project URL&gt;<br></code></pre></td></tr></table></figure> <h3 id="5-git-add"><a href="#5-git-add" class="headerlink" title="5. git add"></a>5. git add</h3><p><code>git add</code>命令会把所有新的代码文件或修改后的文件添加到存储库中。此命令提供了添加文件和文件夹的不同选项。</p> <p><strong>将单个文件添加到暂存区</strong></p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git add your_file_name<br></code></pre></td></tr></table></figure> <p><strong>此选项会将所有修改过的文件和新文件添加到暂存区</strong></p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git add *<br></code></pre></td></tr></table></figure> <h3 id="6-git-commit"><a href="#6-git-commit" class="headerlink" title="6. git commit"></a>6. git commit</h3><p>这个Git命令是必不可少的。如果不能合理利用此命令,则可能会降低项目质量。</p> <p>简而言之,<code>git commit</code>会将更改添加到本地存储库。</p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git commit -m <span class="hljs-string">&quot;your useful commit message&quot;</span><br></code></pre></td></tr></table></figure> <h3 id="7-git-status"><a href="#7-git-status" class="headerlink" title="7. git status"></a>7. git status</h3><p>使用此Git命令可以方便地查看有多少文件需要得到关注。你可以随时运行此命令。</p> <p>此命令可以用来在<code>git add</code>和<code>git commit</code>之间查看状态。</p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git status<br></code></pre></td></tr></table></figure> <h3 id="8-git-branch"><a href="#8-git-branch" class="headerlink" title="8. git branch"></a>8. git branch</h3><p>大多数时候,你的Git存储库中总会有多个分支。我们可以使用<code>git branch</code>命令有效地管理分支。Git分支有许多不同的选项和开关。</p> <p>为简单起见,在这里我将重点介绍如何创建和删除Git分支。</p> <p><strong>列出所有分支</strong></p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git branch<br></code></pre></td></tr></table></figure> <p><strong>创建新的分支</strong></p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git branch &lt;branch_name&gt;<br></code></pre></td></tr></table></figure> <p><strong>删除分支</strong></p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git branch -d &lt;branch_name&gt;<br></code></pre></td></tr></table></figure> <h3 id="9-git-checkout"><a href="#9-git-checkout" class="headerlink" title="9. git checkout"></a>9. git checkout</h3><p>此Git命令用于在分支之间进行切换。这是功能强大的git命令之一,堪称万能的瑞士军刀。</p> <p>以下是切换到另一个分支的语法。</p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git checkout &lt;branch_name&gt;<br></code></pre></td></tr></table></figure> <p>此外,你也可以创建和检出到分支。</p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git checkout -b &lt;your_new_branch_name&gt;<br></code></pre></td></tr></table></figure> <h2 id="进阶Git命令"><a href="#进阶Git命令" class="headerlink" title="进阶Git命令"></a>进阶Git命令</h2><p>掌握了基础的Git命令之后,我们就该学习进阶Git命令了。</p> <p>如果你需要与团队合作,与他人共享代码,那么这些Git命令会非常有用。另外,还有一些类似<code>git log</code>命令,这些命令可帮助查看以前的提交历史。</p> <h3 id="10-git-remote"><a href="#10-git-remote" class="headerlink" title="10. git remote"></a>10. git remote</h3><p><code>git remote</code>命令就像边界,如果你需要与外界连接,则必须使用<code>git remote</code>命令。此命令会将你的本地存储库连接到远程。</p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git remote add &lt;shortname&gt; &lt;url&gt;<br></code></pre></td></tr></table></figure> <p><strong>举例</strong></p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git remote add origin https://dev.azure.com/aCompiler/_git/DemoProject<br></code></pre></td></tr></table></figure> <h3 id="11-git-push"><a href="#11-git-push" class="headerlink" title="11. git push"></a>11. git push</h3><p>(借助<code>git remote</code>命令)与远程存储库连接之后,就需要将更改推送到存储库。</p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git push -u &lt;short_name&gt; &lt;your_branch_name&gt;<br></code></pre></td></tr></table></figure> <p><strong>举例</strong></p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git push -u origin feature_branch<br></code></pre></td></tr></table></figure> <h3 id="12-git-push-–set-upstream"><a href="#12-git-push-–set-upstream" class="headerlink" title="12. git push –set-upstream"></a>12. git push –set-upstream</h3><p>在使用<code>git push</code>之前,我们应该先设置好<code>origin</code>和<code>upstream</code>。下面是设置<code>upstream</code>的命令。</p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git push --set-upstream &lt;short_name&gt; &lt;branch_name&gt;<br></code></pre></td></tr></table></figure> <p><strong>举例</strong></p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git push --set-upstream origin feature_branch<br></code></pre></td></tr></table></figure> <h3 id="13-git-fetch"><a href="#13-git-fetch" class="headerlink" title="13. git fetch"></a>13. git fetch</h3><p>当需要下载其他团队成员的更改时,就得使用<code>git fetch</code>。</p> <p>此命令会下载有关提交、引用等的所有信息,因此你可以在将这些更改应用于本地存储库之前对其进行检查。</p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git fetch<br></code></pre></td></tr></table></figure> <h3 id="14-git-pull"><a href="#14-git-pull" class="headerlink" title="14. git pull"></a>14. git pull</h3><p><code>git pull</code>命令下载内容(而不是元数据),并立即用最新的内容更新本地存储库。</p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git pull &lt;remote_url&gt;<br></code></pre></td></tr></table></figure> <h3 id="15-git-stash"><a href="#15-git-stash" class="headerlink" title="15. git stash"></a>15. git stash</h3><p>此git命令会临时存储已修改的文件。你可以使用以下Git命令处理<code>stash</code>工作。</p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git stash<br></code></pre></td></tr></table></figure> <p>可以使用以下命令查看所有<code>stash</code></p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git stash list<br></code></pre></td></tr></table></figure> <p>如果你需要应用<code>stash</code>到分支,那就使用<code>apply</code></p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git stash apply<br></code></pre></td></tr></table></figure> <h3 id="16-git-log"><a href="#16-git-log" class="headerlink" title="16. git log"></a>16. git log</h3><p>在<code>git log</code>的帮助下,你可以看到所有之前的提交,并且最近的提交出现在最前面。</p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git <span class="hljs-built_in">log</span><br></code></pre></td></tr></table></figure> <p>默认情况下,它将显示当前已检出分支的所有提交,但是你可以强制通过所有选项来查看所有分支的所有提交。</p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git <span class="hljs-built_in">log</span> --all<br></code></pre></td></tr></table></figure> <h3 id="17-git-shortlog"><a href="#17-git-shortlog" class="headerlink" title="17. git shortlog"></a>17. git shortlog</h3><p><code>git shortlog</code>命令会显示来自<code>git log</code>命令的摘要。如果你只对简短的摘要感兴趣,那么此命令就非常有用了。</p> <p>这个命令有助于查看谁处理了什么,因为它对作者及其提交进行了分组。</p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git shortlog<br></code></pre></td></tr></table></figure> <h3 id="18-git-show"><a href="#18-git-show" class="headerlink" title="18. git show"></a>18. git show</h3><p>与<code>git log</code>相比,此命令将显示有关特定提交的详细信息。</p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git show &lt;your_commit_hash&gt;<br></code></pre></td></tr></table></figure> <h3 id="19-git-rm"><a href="#19-git-rm" class="headerlink" title="19. git rm"></a>19. git rm</h3><p>有时你需要从代码库中删除文件,在这种情况下,可以使用<code>git rm</code>命令。</p> <p>它可以从索引和工作目录中删除跟踪的文件。</p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git <span class="hljs-built_in">rm</span> &lt;your_file_name&gt;<br></code></pre></td></tr></table></figure> <h3 id="20-git-merge"><a href="#20-git-merge" class="headerlink" title="20. git merge"></a>20. git merge</h3><p><code>git merge</code>可帮助将来自两个分支的更改集成到单个分支中。</p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git merge &lt;branch_name&gt;<br></code></pre></td></tr></table></figure> <p>此命令会将<code>&lt;branch_name&gt;</code>合并到当前你选择的分支中。</p> <h2 id="高阶Git命令"><a href="#高阶Git命令" class="headerlink" title="高阶Git命令"></a>高阶Git命令</h2><p>现在是时候再上一个层次了。在这个部分中,我们要学习的是高阶的Git命令。这些命令就需要花时间去练习了。</p> <p>但是一旦掌握了这些命令的基础知识,使用起来不要太轻松哦。</p> <h3 id="21-git-rebase"><a href="#21-git-rebase" class="headerlink" title="21. git rebase"></a>21. git rebase</h3><p><code>git rebase</code>类似于<code>git merge</code>命令。它把两个分支集成到一个分支中,但有一个不一样的地方:<code>git rebase</code>命令将会重写提交记录。</p> <p>当你有多个私有分支合并到单个分支时,应使用<code>git rebase</code>命令。它将使得提交历史成为线性的。</p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git rebase &lt;base&gt;<br></code></pre></td></tr></table></figure> <h3 id="22-git-bisect"><a href="#22-git-bisect" class="headerlink" title="22. git bisect"></a>22. git bisect</h3><p><code>git bisect</code>命令可帮助查找糟糕的提交。</p> <p><strong>启动git bisect</strong></p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git bisect start<br></code></pre></td></tr></table></figure> <p><strong>让git bisect知道什么是好的提交</strong></p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git bisect good a123<br></code></pre></td></tr></table></figure> <p><strong>让git bisect知道什么是糟糕的提交</strong></p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git bisect bad z123<br></code></pre></td></tr></table></figure> <p>通过<code>git bisect</code>,只要几分钟你就可以缩小问题代码的范围。</p> <h3 id="23-git-cherry-pick"><a href="#23-git-cherry-pick" class="headerlink" title="23. git cherry-pick"></a>23. git cherry-pick</h3><p><code>git cherry-pick</code>是一个蛮有用的命令,允许你从任意分支中选择任意提交并将其应用于其他任意分支。</p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git cherry-pick &lt;commit-hash&gt;<br></code></pre></td></tr></table></figure> <p><code>git cherry-pick</code>不会修改存储库的历史记录;相反,它会添加到历史记录。</p> <h3 id="24-git-archive"><a href="#24-git-archive" class="headerlink" title="24. git archive"></a>24. git archive</h3><p><code>git archive</code>命令会把多个文件合并为单个文件。就好像<code>zip</code>实用程序一样,所以你可以提取存档文件以获取单个文件。</p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git archive --format zip HEAD &gt; archive-HEAD.zip<br></code></pre></td></tr></table></figure> <p>它将创建当前修订的<code>zip</code>存档。</p> <h3 id="25-git-pull-–rebase"><a href="#25-git-pull-–rebase" class="headerlink" title="25. git pull –rebase"></a>25. git pull –rebase</h3><p>在大多数情况下,当你使用<code>git pull</code>时,你需要重新设置基准(并且不进行合并)。</p> <p>此时,你就可以使用此选项。</p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git pull --rebase<br></code></pre></td></tr></table></figure> <p>这将帮助保持干净的历史记录。另外,还可以避免多次合并。</p> <h3 id="26-git-blame"><a href="#26-git-blame" class="headerlink" title="26. git blame"></a>26. git blame</h3><p>如果你需要逐行检查任意文件的内容,则需要使用<code>git blame</code>命令。它可以帮助确定是谁对文件进行了更改。</p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git blame &lt;your_file_name&gt;<br></code></pre></td></tr></table></figure> <h3 id="27-git-tag"><a href="#27-git-tag" class="headerlink" title="27. git tag"></a>27. git tag</h3><p>在Git中,标签很有用,你可以使用它们来管理发布。你可以将<code>git tag</code>视为不会改变的分支。尤其是要公开发布的时候,则更为重要了。</p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git tag -a v1.0.0<br></code></pre></td></tr></table></figure> <h3 id="28-git-verify-commit"><a href="#28-git-verify-commit" class="headerlink" title="28. git verify-commit"></a>28. git verify-commit</h3><p><code>git verify-commit</code>命令将检查<code>gpg</code>签名。GPG,GNU Privacy Guard,是sign文件中使用的工具,包含签名。</p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git verify-commit &lt;commit&gt;<br></code></pre></td></tr></table></figure> <h3 id="29-git-verify-tag"><a href="#29-git-verify-tag" class="headerlink" title="29. git verify-tag"></a>29. git verify-tag</h3><p>可以以同样的方式确认标签。</p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git verify-tag &lt;tag&gt;<br></code></pre></td></tr></table></figure> <h3 id="30-git-diff"><a href="#30-git-diff" class="headerlink" title="30. git diff"></a>30. git diff</h3><p>大多数情况下,在提交或推送之前,你需要比较两个git文件或分支。用这个命令就方便多了。</p> <p><strong>将工作目录与本地存储库进行比较</strong></p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git diff HEAD &lt;filename&gt;<br></code></pre></td></tr></table></figure> <p><strong>比较两个分支</strong></p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git diff &lt;<span class="hljs-built_in">source</span> branch&gt; &lt;target branch&gt;<br></code></pre></td></tr></table></figure> <h3 id="31-git-citool"><a href="#31-git-citool" class="headerlink" title="31. git citool"></a>31. git citool</h3><p><code>git citool</code>是Git提交的图形化替代。</p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git citool<br></code></pre></td></tr></table></figure> <h3 id="32-git-mv"><a href="#32-git-mv" class="headerlink" title="32. git mv"></a>32. git mv</h3><p>重命名git文件。接受两个参数,源文件名和目标文件名。</p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git <span class="hljs-built_in">mv</span> &lt;old-file-name&gt; &lt;new-file-name&gt;<br></code></pre></td></tr></table></figure> <h3 id="33-git-clean"><a href="#33-git-clean" class="headerlink" title="33. git clean"></a>33. git clean</h3><p>你可以使用<code>git clean</code>命令处理未跟踪的文件。可以使用此命令从工作目录中删除所有未跟踪的文件。如果要处理跟踪的文件,则需要使用<code>git reset</code>命令。</p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git clean<br></code></pre></td></tr></table></figure> <h3 id="34-git-help"><a href="#34-git-help" class="headerlink" title="34. git help"></a>34. git help</h3><p>Git中有许多命令,如果你需要其他命令的帮助,则可以随时在终端上使用<code>git help</code>。</p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git <span class="hljs-built_in">help</span> &lt;git_command&gt;<br></code></pre></td></tr></table></figure> <h3 id="35-git-whatchanged"><a href="#35-git-whatchanged" class="headerlink" title="35. git whatchanged"></a>35. git whatchanged</h3><p>此命令的作用与<code>git log</code>相同,但为原始格式。并且由于历史原因,它也是git的一份子。</p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ git whatchanged<br></code></pre></td></tr></table></figure> </div> <hr/> <div> <div class="post-metas my-3"> <div class="post-meta mr-3 d-flex align-items-center"> <i class="iconfont icon-category"></i> <span class="category-chains"> <span class="category-chain"> <a href="/categories/Developer/" class="category-chain-item">Developer</a> </span> </span> </div> <div class="post-meta"> <i class="iconfont icon-tags"></i> <a href="/tags/Git/" class="print-no-link">#Git</a> </div> </div> <div class="license-box my-3"> <div class="license-title"> <div>最常用的 35 个 Git 命令</div> <div>https://awaw.cc/post/git-command/</div> </div> <div class="license-meta"> <div class="license-meta-item"> <div>作者</div> <div>pdone</div> </div> <div class="license-meta-item license-meta-date"> <div>发布于</div> <div>2021年5月21日</div> </div> <div class="license-meta-item license-meta-date"> <div>更新于</div> <div>2023年7月4日</div> </div> <div class="license-meta-item"> <div>许可协议</div> <div> <a class="print-no-link" target="_blank" href="https://creativecommons.org/licenses/by-nc-sa/4.0/"> <span class="hint--top hint--rounded" aria-label="BY - 署名"> <i class="iconfont icon-by"></i> </span> </a> <a class="print-no-link" target="_blank" href="https://creativecommons.org/licenses/by-nc-sa/4.0/"> <span class="hint--top hint--rounded" aria-label="NC - 非商业性使用"> <i class="iconfont icon-nc"></i> </span> </a> <a class="print-no-link" target="_blank" href="https://creativecommons.org/licenses/by-nc-sa/4.0/"> <span class="hint--top hint--rounded" aria-label="SA - 相同方式共享"> <i class="iconfont icon-sa"></i> </span> </a> </div> </div> </div> <div class="license-icon iconfont"></div> </div> <div class="post-prevnext my-3"> <article class="post-prev col-6"> <a href="/post/car-code-generator/" title="挪车码生成器 - 开源"> <i class="iconfont icon-arrowleft"></i> <span class="hidden-mobile">挪车码生成器 - 开源</span> <span class="visible-mobile">上一篇</span> </a> </article> <article class="post-next col-6"> <a href="/post/bat-date/" title="批处理获取时间小于10点时补零"> <span class="hidden-mobile">批处理获取时间小于10点时补零</span> <span class="visible-mobile">下一篇</span> <i class="iconfont icon-arrowright"></i> </a> </article> </div> </div> <article id="comments" lazyload> <div id="waline"></div> <script type="text/javascript"> Fluid.utils.loadComments('#waline', function() { Fluid.utils.createCssLink('https://cdn.staticfile.org/waline/2.15.8/waline.min.css') Fluid.utils.createScript('https://cdn.staticfile.org/waline/2.15.8/waline.min.js', function() { var options = Object.assign( {"serverURL":"https://waline.awaw.cc","path":"window.location.pathname","meta":["nick","mail","link"],"requiredMeta":["nick"],"lang":"zh-CN","emoji":["https://cdn.awaw.cc/raw/walinejs/emojis/main/alus"],"dark":"html[data-user-color-scheme=\"dark\"]","wordLimit":0,"pageSize":10}, { el: '#waline', path: window.location.pathname } ) Waline.init(options); Fluid.utils.waitElementVisible('#waline .vcontent', () => { var imgSelector = '#waline .vcontent img:not(.vemoji)'; Fluid.plugins.imageCaption(imgSelector); Fluid.plugins.fancyBox(imgSelector); }) }); }); </script> <noscript>Please enable JavaScript to view the comments</noscript> </article> </article> </div> </div> </div> <div class="side-col d-none d-lg-block col-lg-2"> <aside class="sidebar" style="margin-left: -1rem"> <div id="toc"> <p class="toc-header"> <i class="iconfont icon-list"></i> <span>目录</span> </p> <div class="toc-body" id="toc-body"></div> </div> </aside> </div> </div> </div> <a id="scroll-top-button" aria-label="TOP" href="#" role="button"> <i class="iconfont icon-arrowup" aria-hidden="true"></i> </a> <div class="modal fade" id="modalSearch" tabindex="-1" role="dialog" aria-labelledby="ModalLabel" aria-hidden="true"> <div class="modal-dialog modal-dialog-scrollable modal-lg" role="document"> <div class="modal-content"> <div class="modal-header text-center"> <h4 class="modal-title w-100 font-weight-bold">搜索</h4> <button type="button" id="local-search-close" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">&times;</span> </button> </div> <div class="modal-body mx-3"> <div class="md-form mb-5"> <input type="text" id="local-search-input" class="form-control validate"> <label data-error="x" data-success="v" for="local-search-input">关键词</label> </div> <div class="list-group" id="local-search-result"></div> </div> </div> </div> </div> </main> <footer> <div class="footer-inner"> <div class="footer-content"> <div style="font-size:0.8rem">Powered by <a href="https://hexo.io" target="_blank" rel="nofollow noopener"><span>Hexo</span></a> & <a href="https://github.com/fluid-dev/hexo-theme-fluid" target="_blank" rel="nofollow noopener"><span>Fluid</span></a><br> © 2024 <a href="https://github.com/pdone" target="_blank" rel="nofollow noopener"><span>pdone</span></a> All rights reserved.</div> </div> </div> </footer> <!-- Scripts --> <script src="https://lib.baomitu.com/nprogress/0.2.0/nprogress.min.js" ></script> <link rel="stylesheet" href="https://lib.baomitu.com/nprogress/0.2.0/nprogress.min.css" /> <script> NProgress.configure({"showSpinner":false,"trickleSpeed":100}) NProgress.start() window.addEventListener('load', function() { NProgress.done(); }) </script> <script src="https://lib.baomitu.com/jquery/3.6.4/jquery.min.js" ></script> <script src="https://lib.baomitu.com/twitter-bootstrap/4.6.1/js/bootstrap.min.js" ></script> <script src="/js/events.js" ></script> <script src="/js/plugins.js" ></script> <script src="https://lib.baomitu.com/typed.js/2.0.12/typed.min.js" ></script> <script> (function (window, document) { var typing = Fluid.plugins.typing; var subtitle = document.getElementById('subtitle'); if (!subtitle || !typing) { return; } var text = subtitle.getAttribute('data-typed-text'); typing(text); })(window, document); </script> <script src="/js/img-lazyload.js" ></script> <script> Fluid.utils.createScript('https://lib.baomitu.com/tocbot/4.20.1/tocbot.min.js', function() { var toc = jQuery('#toc'); if (toc.length === 0 || !window.tocbot) { return; } var boardCtn = jQuery('#board-ctn'); var boardTop = boardCtn.offset().top; window.tocbot.init(Object.assign({ tocSelector : '#toc-body', contentSelector : '.markdown-body', linkClass : 'tocbot-link', activeLinkClass : 'tocbot-active-link', listClass : 'tocbot-list', isCollapsedClass: 'tocbot-is-collapsed', collapsibleClass: 'tocbot-is-collapsible', scrollSmooth : true, includeTitleTags: true, headingsOffset : -boardTop, }, CONFIG.toc)); if (toc.find('.toc-list-item').length > 0) { toc.css('visibility', 'visible'); } Fluid.events.registerRefreshCallback(function() { if ('tocbot' in window) { tocbot.refresh(); var toc = jQuery('#toc'); if (toc.length === 0 || !tocbot) { return; } if (toc.find('.toc-list-item').length > 0) { toc.css('visibility', 'visible'); } } }); }); </script> <script src=https://lib.baomitu.com/clipboard.js/2.0.11/clipboard.min.js></script> <script>Fluid.plugins.codeWidget();</script> <script> Fluid.utils.createScript('https://lib.baomitu.com/anchor-js/4.3.1/anchor.min.js', function() { window.anchors.options = { placement: CONFIG.anchorjs.placement, visible : CONFIG.anchorjs.visible }; if (CONFIG.anchorjs.icon) { window.anchors.options.icon = CONFIG.anchorjs.icon; } var el = (CONFIG.anchorjs.element || 'h1,h2,h3,h4,h5,h6').split(','); var res = []; for (var item of el) { res.push('.markdown-body > ' + item.trim()); } if (CONFIG.anchorjs.placement === 'left') { window.anchors.options.class = 'anchorjs-link-left'; } window.anchors.add(res.join(', ')); Fluid.events.registerRefreshCallback(function() { if ('anchors' in window) { anchors.removeAll(); var el = (CONFIG.anchorjs.element || 'h1,h2,h3,h4,h5,h6').split(','); var res = []; for (var item of el) { res.push('.markdown-body > ' + item.trim()); } if (CONFIG.anchorjs.placement === 'left') { anchors.options.class = 'anchorjs-link-left'; } anchors.add(res.join(', ')); } }); }); </script> <script> Fluid.utils.createScript('https://lib.baomitu.com/fancybox/3.5.7/jquery.fancybox.min.js', function() { Fluid.plugins.fancyBox(); }); </script> <script>Fluid.plugins.imageCaption();</script> <script src="/js/local-search.js" ></script> <script defer src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js" ></script> <!-- 主题的启动项,将它保持在最底部 --> <!-- the boot of the theme, keep it at the bottom --> <script src="/js/boot.js" ></script> <noscript> <div class="noscript-warning">博客在允许 JavaScript 运行的环境下浏览效果更佳</div> </noscript> </body> </html>

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