<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
        <title>开源 - 分类 - 🌻Eric的数字花园</title>
        <link>https://ericzzz.com/categories/%E5%BC%80%E6%BA%90/</link>
        <description>开源 - 分类 - 🌻Eric的数字花园</description>
        <generator>Hugo -- gohugo.io</generator><language>zh-CN</language><copyright>EricZhao</copyright><lastBuildDate>Thu, 23 Oct 2025 20:52:17 &#43;0800</lastBuildDate><atom:link href="https://ericzzz.com/categories/%E5%BC%80%E6%BA%90/" rel="self" type="application/rss+xml" /><item>
    <title>如何为开源事业做贡献</title>
    <link>https://ericzzz.com/how-to-contribute-in-github/</link>
    <pubDate>Thu, 23 Oct 2025 20:52:17 &#43;0800</pubDate>
    <author>EricZhao</author>
    <guid>https://ericzzz.com/how-to-contribute-in-github/</guid>
    <description><![CDATA[<p>前段时间读完祖师爷 Linus 的自传 <a href="https://book.douban.com/subject/25930025/" target="_blank" rel="noopener noreffer ">《只是为了好玩》</a>，从手搓操作系统内核并发布到互联网上，到吸引全球开发者共同开发建设才有了现在的 Linux。</p>
<p>想必看了 Linus 的故事，或者刚学习一门编程语言的新人，不知道语言如何实战，或想参与开源运动，那么一起来 Github 上发挥你的聪明才智吧。</p>
<h2 id="步骤-1准备工作和寻找项目">步骤 1：准备工作和寻找项目</h2>
<ol>
<li><strong>了解贡献指南（<code>CONTRIBUTING.md</code>）</strong>：
<ul>
<li>直接在 GitHub 搜索栏输入 label:&ldquo;good first issue&rdquo;，可以找到大量适合新手的任务，根据你熟悉的语言和你感兴趣的范围，找到你想贡献的项目。</li>
<li>通常在项目的根目录下有一个名为 <code>CONTRIBUTING.md</code> 的文件，它详细说明了项目的代码规范、测试要求、提交信息格式和贡献流程。<strong>务必先阅读它。</strong></li>
<li>不需要一定选择高 star 项目，从感兴趣的项目开始，找到适合自己的项目，参与其中。</li>
<li>如果你发现项目没有 <code>CONTRIBUTING.md</code> 文件，你可以尝试在项目的 Issues 页面中寻找类似的问题，或者向项目维护者询问是否有贡献指南。</li>
</ul>
</li>
<li><strong>选择任务（Issue）并声明</strong>：
<ul>
<li>在项目的 <strong>Issues</strong> 页面找到一个你感兴趣且力所能及的任务。推荐从标记有 <strong><code>good first issue</code></strong> 或 <strong><code>beginner-friendly</code></strong> 的任务开始。</li>
<li>在对应的 Issue 下留言，表明你希望领取这个任务，询问是否有其他人正在处理，并确认你的理解是否正确。</li>
<li>如果你对项目感兴趣但没有足够的知识和能力来解决问题，也可以在 Issue 中提出你的想法或建议，让项目维护者参与讨论。</li>
</ul>
</li>
</ol>
<hr>
<h2 id="步骤-2建立本地工作环境">步骤 2：建立本地工作环境</h2>
<ol>
<li><strong>派生项目（Fork the Repository）</strong>：
<ul>
<li>访问目标项目的 GitHub 页面。</li>
<li>点击右上角的 <strong>&ldquo;Fork&rdquo;</strong> 按钮。这会在你的 GitHub 账户下创建一个该项目仓库的完整副本。</li>
</ul>
</li>
<li><strong>克隆到本地（Clone Your Fork）</strong>：
<ul>
<li>在你派生后的仓库页面，点击 <strong>&ldquo;Code&rdquo;</strong> 按钮，复制 SSH 或 HTTPS 地址。</li>
<li>在你的本地终端执行克隆命令：
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-bash">
        <span class="code-title"><i class="arrow fas fa-angle-right fa-fw" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h fa-fw" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy fa-fw" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">git clone &lt;你复制的 URL&gt;
</span></span><span class="line"><span class="cl"><span class="nb">cd</span> &lt;项目文件夹&gt;</span></span></code></pre></div></div>
</li>
</ul>
</li>
<li><strong>添加上游仓库（Add Upstream Remote）</strong>：
<ul>
<li>添加原始仓库作为“上游”（Upstream），方便你获取最新的主分支代码：
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-bash">
        <span class="code-title"><i class="arrow fas fa-angle-right fa-fw" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h fa-fw" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy fa-fw" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">git remote add upstream &lt;原始项目 URL&gt;
</span></span><span class="line"><span class="cl">git remote -v  <span class="c1"># 检查是否成功添加了 origin （你的 fork) 和 upstream （原始项目）</span></span></span></code></pre></div></div>
</li>
</ul>
</li>
</ol>
<hr>
<h2 id="步骤-3开发和提交代码">步骤 3：开发和提交代码</h2>
<ol>
<li><strong>创建新的开发分支（Create a New Branch）</strong>：
<ul>
<li><strong>永远不要</strong>直接在 <code>main</code> 或 <code>master</code> 分支上工作。从主分支创建一个新分支，分支名称应有描述性，例如 <code>fix/bug-description</code> 或 <code>feat/add-new-feature</code>。
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-bash">
        <span class="code-title"><i class="arrow fas fa-angle-right fa-fw" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h fa-fw" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy fa-fw" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 确保你在 main/master 分支</span>
</span></span><span class="line"><span class="cl">git checkout main
</span></span><span class="line"><span class="cl"><span class="c1"># 拉取最新代码，防止冲突</span>
</span></span><span class="line"><span class="cl">git pull upstream main
</span></span><span class="line"><span class="cl"><span class="c1"># 创建并切换到新分支</span>
</span></span><span class="line"><span class="cl">git checkout -b &lt;你的分支名称&gt;</span></span></code></pre></div></div>
</li>
</ul>
</li>
<li><strong>编写代码并测试</strong>：
<ul>
<li>进行你的修改（修复 Bug、添加功能、改进文档等）。</li>
<li><strong>运行项目自带的测试</strong>，并根据需要添加新的测试以覆盖你的代码更改，确保没有破坏现有功能。</li>
</ul>
</li>
<li><strong>提交更改（Commit Changes）</strong>：
<ul>
<li>暂存你的更改：<code>git add .</code> 或 <code>git add &lt;特定文件&gt;</code></li>
<li>提交更改：<code>git commit -m &quot;清晰描述你的更改&quot;</code>。<strong>提交信息应该清晰、简洁，并遵循项目的规范。</strong></li>
<li>更新日志参考 <a href="https://keepachangelog.com/en/1.0.0/" target="_blank" rel="noopener noreffer ">Keep a changelog</a> 网站，里面详细介绍<strong>如何维护更新日志</strong>。</li>
</ul>
</li>
</ol>
<hr>
<h2 id="步骤-4提出拉取请求pull-request-pr">步骤 4：提出拉取请求（Pull Request, PR）</h2>
<ol>
<li><strong>推送到你的 Fork（Push to Your Fork）</strong>：
<ul>
<li>将你的本地分支推送到你在 GitHub 上的派生仓库：
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-bash">
        <span class="code-title"><i class="arrow fas fa-angle-right fa-fw" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h fa-fw" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy fa-fw" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">git push origin &lt;你的分支名称&gt;</span></span></code></pre></div></div>
</li>
</ul>
</li>
<li><strong>创建拉取请求（Create the Pull Request）</strong>：
<ul>
<li>前往你派生后的 GitHub 仓库页面。GitHub 会提示你有一个新分支被推送上来，并显示 <strong>&ldquo;Compare &amp; pull request&rdquo;</strong> 按钮。</li>
<li>点击它，进入 PR 创建页面。</li>
<li><strong>填写 PR 描述：</strong> 确保标题和描述清晰，详细说明你做了什么、解决了哪个 Issue（使用 <code>Closes #Issue 编号</code> 或 <code>Fixes #Issue 编号</code> 关联），以及你的更改动机。</li>
<li>点击 <strong>&ldquo;Create pull request&rdquo;</strong> 提交。</li>
</ul>
</li>
</ol>
<hr>
<h2 id="步骤-5审查和合并">步骤 5：审查和合并</h2>
<ol>
<li><strong>等待审查和反馈</strong>：
<ul>
<li>项目维护者会审查你的代码。他们可能会留下评论，要求你进行修改、澄清或添加测试。</li>
</ul>
</li>
<li><strong>进行修改（如果需要）</strong>：
<ul>
<li>在你的本地分支上进行维护者要求的修改。</li>
<li><code>git add .</code> -&gt; <code>git commit -m &quot;Fixes based on review&quot;</code> -&gt; <code>git push origin &lt;你的分支名称&gt;</code>。</li>
<li><strong>注意：</strong> 所有的修改都会自动更新到你之前创建的 Pull Request 中。</li>
</ul>
</li>
<li><strong>最终合并</strong>：
<ul>
<li>一旦你的代码通过了审查和所有测试，项目维护者就会将你的分支合并（Merge）到原始项目的主分支中。</li>
</ul>
</li>
</ol>
<p>恭喜你！你的代码已成功贡献到开源项目！</p>
]]></description>
</item>
</channel>
</rss>
