Gitee-Fork介绍和使用流程
<div id="cnblogs_post_body" class="blogpost-body cnblogs-markdown"><h2 id="一介绍">一、介绍</h2>
<p> 在 <strong>Gitee</strong> 或其他代码托管平台上,<strong>Fork</strong> 是将目标仓库复制到自己的账户下,形成独立副本的操作。Fork 的主要作用是为非开发者或协作者提供一个安全的、独立的环境,以便对代码进行修改和贡献。</p>
<h2 id="二主要作用">二、主要作用</h2>
<p> </p>
<p><strong>创建独立的代码副本</strong></p>
<ul>
<li>Fork 会将目标仓库复制到自己的账户下,你拥有完整的读写权限,而不会影响原仓库。</li>
<li>对 Fork 仓库的任何更改都不会直接影响原仓库,安全性高。</li>
</ul>
<p> </p>
<p><strong>非协作者贡献代码</strong></p>
<ul>
<li>如果你不是目标仓库的协作者,Fork 是向仓库贡献代码的主要方式。通过 Fork,可以:
<ul>
<li>修改代码。</li>
<li>提交 Pull Request,将修改提交给原仓库。</li>
</ul>
</li>
</ul>
<p><strong>独立开发和实验</strong></p>
<ul>
<li>Fork 仓库可以作为实验和独立开发的环境。</li>
<li>你可以自由地修改代码、尝试新功能,而无需担心影响主项目。</li>
</ul>
<p><strong>参与开源项目</strong></p>
<ul>
<li>Fork 是开源项目中广泛使用的机制,用于开发者之间的协作。你可以:
<ul>
<li>Fork 开源项目。</li>
<li>修改或添加新功能。</li>
<li>通过 Pull Request 向原项目提交你的改动。</li>
</ul>
</li>
</ul>
<p><strong>与原仓库保持同步</strong></p>
<ul>
<li>即使 Fork 仓库与原仓库分离,你仍然可以从原仓库拉取最新代码,保持同步开发。</li>
</ul>
<p><strong>学习和参考代码</strong></p>
<ul>
<li>Fork 仓库是学习项目代码的有效方式,你可以在本地修改和运行代码,而不影响原仓库。</li>
<li>适用于需要分析或参考他人代码的场景。</li>
</ul>
<h2 id="三fork-的常见使用场景">三、Fork 的常见使用场景</h2>
<div class="table-wrapper">
<table>
<thead>
<tr><th><strong>场景</strong></th><th><strong>具体作用</strong></th></tr>
</thead>
<tbody>
<tr>
<td>贡献开源项目</td>
<td>非协作者 Fork 项目后修改代码,通过 PR 提交改动给原项目。</td>
</tr>
<tr>
<td>团队开发中的分支保护</td>
<td>Fork 项目后开发新功能,主项目仅在审查通过后接受改动,保护主分支的稳定性。</td>
</tr>
<tr>
<td>学习项目代码</td>
<td>学习其他开发者的代码或尝试修改代码,而不影响原项目。</td>
</tr>
<tr>
<td>实验和调试</td>
<td>在 Fork 仓库中尝试不同的开发方式或修复 bug,适合实验环境。</td>
</tr>
<tr>
<td>私人开发或维护</td>
<td>将公开项目 Fork 到自己的账户中,用于私人开发或项目定制化。</td>
</tr>
</tbody>
</table>
</div>
<h2 id="四fork-的操作流程">四、Fork 的操作流程</h2>
<ul>
<li>
<h3><strong>1.Fork 仓库</strong></h3>
<ul>
<li>在 Gitee 的目标仓库页面,点击 <strong>Fork</strong> 按钮。</li>
<li>选择 Fork 到自己的账户或组织下。
<p><img src="https://img2024.cnblogs.com/blog/1321192/202503/1321192-20250320205835998-257507193.png" alt="" loading="lazy"></p>
<p><span style="color: rgba(255, 0, 0, 1)">点击Create fork按钮后,就可以在你指定的组织下或者你的账号下 创建一个新的仓库了。</span></p>
</li>
</ul>
</li>
<li>
<h3><strong>2.克隆 Fork 仓库</strong></h3>
<ul>
<li>将 Fork 仓库 克隆到本地开发环境。</li>
</ul>
<pre class="highlighter-hljs"><code class="language-shell highlighter-hljs hljs">
复制以下代码,克隆你fork的新仓库地址:
git clone https://gitee.com/your_username/forked_repo.git
</code></pre>
</li>
</ul>
<p> </p>
<ul>
<li>
<h3><strong>3.修改代码并推送</strong></h3>
</li>
</ul>
<p>在 Fork 仓库中创建分支,进行修改后提交更改。</p>
<div class="cnblogs_code">
<pre>git checkout -b <span style="color: rgba(0, 0, 255, 1)">new</span>-feature #注意new-<span style="color: rgba(0, 0, 0, 1)">feature分支名,不能跟 原始仓库的默认分支同名,否者到时候无法提交pr,第四步我会介绍的。
# 修改代码....
git add .
git commit </span>-m <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Add new feature</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
git push origin </span><span style="color: rgba(0, 0, 255, 1)">new</span>-<span style="color: rgba(0, 0, 0, 1)">feature
<strong><span style="color: rgba(255, 0, 0, 1)">这里有几点细节我需要说明一下:
</span></strong></span><span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">)此时可以看到在fork的仓库test中,已经有了一次新增的push记录了;(test fork这次提交,就是新push的记录)
</span><span style="color: rgba(128, 0, 128, 1)">2</span>)因为这个仓库是我们fork别的仓库而新创建的,fork完成后,你会发现原始仓库中的所有历史push记录也都会被全部的显示到这个fork新仓库中;(2024年6月17号的这次提交记录,就是原始仓库中的提交记录)</pre>
<img src="https://img2024.cnblogs.com/blog/1321192/202503/1321192-20250320210427526-1708020752.png" alt="" loading="lazy">
<pre></pre>
</div>
<h3> <strong style="font-family: "Courier New"; font-size: 12px">4.发起 Pull Request</strong></h3>
<ol>
<li style="list-style-type: none">
<ul>
<li>回到 Gitee的web页面中,在原始仓库中 提交 Pull Request,选择fork仓库的分支 将修改合并到 原仓库。</li>
<li>在原始仓库中,创建的pr如下<img src="https://img2024.cnblogs.com/blog/1321192/202503/1321192-20250320211657679-943893419.png" alt="" loading="lazy"></li>
<li>Merge合并这个pr:
<p><img src="https://img2024.cnblogs.com/blog/1321192/202503/1321192-20250320211815161-66567109.png" alt="" loading="lazy"></p>
<p> </p>
</li>
<li>
<p> 确认发现,在fork的新仓库中做的所有修改操作 已经全部merge到了原始仓库的默认分支(这是提交pr时指定的合并到哪个分支就是哪个分支)了。</p>
</li>
<li>
<p><img src="https://img2024.cnblogs.com/blog/1321192/202503/1321192-20250320211913052-936799996.png" alt="" loading="lazy"></p>
<p> </p>
</li>
</ul>
</li>
</ol>
<p> <span style="color: rgba(255, 0, 0, 1)"><strong>这里也有一点需要说明:</strong></span></p>
<p>1) 在fork的新仓库中修改代码时,需要创建一个新分支,并且新分支的名字不能跟 “原仓库”的默认分支(一般是master或者main分支)同名,如果同名的话 我们在提交pr页面发现根本无法提交!!!</p>
<p> </p>
<h3><strong>5.同步更新原仓库的改动</strong></h3>
<ul>
<li>如果原仓库发生了更新,可以通过一下命令 :<span style="color: rgba(255, 0, 0, 1)">添加远程仓库地址同步最新代码。</span></li>
</ul>
<pre class="highlighter-hljs"><code class="language-shell highlighter-hljs hljs">git remote add upstream https://gitee.com/original_repo.git#指定原仓库地址
git fetch upstream
git merge upstream/main#指定要同步的原仓库的分支
</code></pre>
<h3 id="五fork-与-clone-的区别">五、Fork 与 Clone 的区别</h3>
<div class="table-wrapper">
<table>
<thead>
<tr><th><strong>操作</strong></th><th><strong>Fork</strong></th><th><strong>Clone</strong></th></tr>
</thead>
<tbody>
<tr>
<td><strong>结果</strong></td>
<td>创建目标仓库的副本到你的账户。</td>
<td>将目标仓库的代码下载到本地。</td>
</tr>
<tr>
<td><strong>权限</strong></td>
<td>你对 Fork 仓库有完整的读写权限,但原仓库只读。</td>
<td>仅在本地对代码操作,不影响任何远程仓库。</td>
</tr>
<tr>
<td><strong>适用场景</strong></td>
<td>非协作者参与项目开发或私人维护项目时使用。</td>
<td>协作者直接开发或仅需要本地查看代码时使用。</td>
</tr>
<tr>
<td><strong>影响范围</strong></td>
<td>Fork 后的修改仅影响 Fork 仓库,不直接影响原仓库。</td>
<td>Clone 不改变任何远程仓库,只操作本地副本。</td>
</tr>
</tbody>
</table>
</div>
</div>
<div id="MySignature">参考:https://www.cnblogs.com/linhuaming/p/18646579</div><br><br>
来源:https://www.cnblogs.com/pingguomang/p/18783891
頁:
[1]