doc: Update git.md (#109)

补充.gitignore规则说明和例子 d9ed56a390
This commit is contained in:
jaywcjlove
2022-11-17 03:41:10 +00:00
parent b184183256
commit 4c4b2992d5

View File

@ -225,17 +225,42 @@
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line">$ <span class="token function">git</span> log <span class="token parameter variable">--stat</span> <span class="token parameter variable">-M</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="忽略文件"><a aria-hidden="true" tabindex="-1" href="#忽略文件"><span class="icon icon-link"></span></a>忽略文件</h3><div class="wrap-body">
<pre class="language-gitignore"><code class="language-gitignore code-highlight"><span class="code-line line-number" line="1"><span class="token entry string"><span class="token punctuation">/</span>logs<span class="token punctuation">/</span><span class="token operator">*</span></span>
</span><span class="code-line line-number" line="2"><span class="token comment"># “!” 意思是不要忽视</span>
</span><span class="code-line line-number" line="3"><span class="token entry string"><span class="token operator">!</span>logs<span class="token punctuation">/</span>.gitkeep</span>
</span><span class="code-line line-number" line="4"><span class="token comment"># 忽略 Mac 系统文件</span>
</span><span class="code-line line-number" line="5"><span class="token entry string">.DS_store</span>
</span><span class="code-line line-number" line="6"><span class="token comment"># 忽略 node_modules 文件夹</span>
</span><span class="code-line line-number" line="7"><span class="token entry string">node_modules</span>
</span><span class="code-line line-number" line="8"><span class="token comment"># 忽略 SASS 配置文件</span>
</span><span class="code-line line-number" line="9"><span class="token entry string">.sass-cache</span>
<p><code>.gitignore</code> 文件指定了 Git 应该忽略的 <strong>未跟踪的</strong> 文件。</p>
<ul>
<li>当面 <code>.gitignore</code> 文件定义规则的优先级高于上级路径 <code>.gitignore</code> 定义规则的优先级;后定义的规则优先级高于前面定义规则的优先级。</li>
<li>空行不匹配任何文件,可用于增加文件可读性。</li>
<li><code>#</code>开头的行为全行注释,不支持行尾类注释。如果希望匹配以<code>#</code>开头的文件或文件夹,可前缀<code>\</code>进行转义。</li>
<li>行尾空格默认被忽略,除非前缀<code>\</code>进行转义。行首空格会被正常处理,不会被忽略。</li>
<li>行首<code>!</code>表示否定模式。如果匹配的文件被其他低优先级规则忽略,则会被重新跟踪。如果希望匹配以<code>!</code>开头的文件或文件夹,可前缀<code>\</code>进行转义。</li>
<li>统一用<code>/</code>表示路径分隔符,不区分操作系统。</li>
<li>如果规则包含路径分隔符<code>/</code>,则仅在指定的文件夹这一层级进行文件搜索匹配,不会递归搜索子目录;如果规则不含路径分隔符,则会在当前文件夹内进行递归搜索匹配。</li>
<li>如果规则以路径分隔符<code>/</code>结尾,则仅会匹配文件夹;否则会匹配文件和文件夹。</li>
<li>通配符不能匹配<code>/</code><code>*</code>匹配任意个数字符,<code>?</code>匹配任意一个字符,更多细节参见<a href="https://man7.org/linux/man-pages/man7/glob.7.html">glob(7)</a></li>
<li>双星<code>**</code>匹配任意路径。以<code>**</code>开头表示在全部文件夹下去匹配,以<code>/**</code>结尾表示匹配指定文件夹下的全部内容,中间<code>**</code>匹配任意深度路径。</li>
</ul>
<pre class="language-gitignore"><code class="language-gitignore code-highlight"><span class="code-line line-number" line="1"><span class="token comment"># 忽略当前目录logs文件夹下的全部内容</span>
</span><span class="code-line line-number" line="2"><span class="token entry string"><span class="token punctuation">/</span>logs<span class="token punctuation">/</span></span>
</span><span class="code-line line-number" line="3"><span class="token entry string"><span class="token punctuation">/</span>logs<span class="token punctuation">/</span><span class="token operator">*</span></span>
</span><span class="code-line line-number" line="4"><span class="token entry string"><span class="token punctuation">/</span>logs<span class="token punctuation">/</span><span class="token operator">**</span></span>
</span><span class="code-line line-number" line="5"><span class="token comment"># 上述几条规则等效</span>
</span><span class="code-line line-number" line="6">
</span><span class="code-line line-number" line="7"><span class="token comment"># 忽略 Mac 系统文件,包括任意子路径下的同名文件(夹)</span>
</span><span class="code-line line-number" line="8"><span class="token entry string">.DS_store</span>
</span><span class="code-line line-number" line="9">
</span><span class="code-line line-number" line="10"><span class="token comment"># 忽略 node_modules 文件夹,包括任意子路径下的同名文件夹</span>
</span><span class="code-line line-number" line="11"><span class="token entry string">node_modules<span class="token punctuation">/</span></span>
</span><span class="code-line line-number" line="12">
</span><span class="code-line line-number" line="13"><span class="token comment"># 忽略任意子路径下build、target文件夹但不忽略src/main、src/test下的build、target文件夹</span>
</span><span class="code-line line-number" line="14"><span class="token entry string">build<span class="token punctuation">/</span></span>
</span><span class="code-line line-number" line="15"><span class="token entry string"><span class="token operator">!</span><span class="token operator">**</span><span class="token punctuation">/</span>src<span class="token punctuation">/</span>main<span class="token punctuation">/</span><span class="token operator">**</span><span class="token punctuation">/</span>build<span class="token punctuation">/</span></span>
</span><span class="code-line line-number" line="16"><span class="token entry string"><span class="token operator">!</span><span class="token operator">**</span><span class="token punctuation">/</span>src<span class="token punctuation">/</span>test<span class="token punctuation">/</span><span class="token operator">**</span><span class="token punctuation">/</span>build<span class="token punctuation">/</span></span>
</span><span class="code-line line-number" line="17"><span class="token entry string">target<span class="token punctuation">/</span></span>
</span><span class="code-line line-number" line="18"><span class="token entry string"><span class="token operator">!</span><span class="token operator">**</span><span class="token punctuation">/</span>src<span class="token punctuation">/</span>main<span class="token punctuation">/</span><span class="token operator">**</span><span class="token punctuation">/</span>target<span class="token punctuation">/</span></span>
</span><span class="code-line line-number" line="19"><span class="token entry string"><span class="token operator">!</span><span class="token operator">**</span><span class="token punctuation">/</span>src<span class="token punctuation">/</span>test<span class="token punctuation">/</span><span class="token operator">**</span><span class="token punctuation">/</span>target<span class="token punctuation">/</span></span>
</span><span class="code-line line-number" line="20">
</span><span class="code-line line-number" line="21"><span class="token comment"># 使用 ! 重新包含指定文件(夹)</span>
</span><span class="code-line line-number" line="22"><span class="token entry string"><span class="token operator">!</span>logs<span class="token punctuation">/</span>.gitkeep</span>
</span></code></pre>
<p><code>.gitignore</code> 文件指定了 Git 应该忽略的未跟踪的文件</p>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="git-配置-ssh-代理"><a aria-hidden="true" tabindex="-1" href="#git-配置-ssh-代理"><span class="icon icon-link"></span></a>git 配置 ssh 代理</h3><div class="wrap-body">
<pre class="wrap-text"><code class="language-bash code-highlight"><span class="code-line">$ <span class="token function">cat</span> ~/.ssh/config
</span><span class="code-line">Host gitlab.com