42 lines
50 KiB
JavaScript
42 lines
50 KiB
JavaScript
import{_ as s,c as i,o as a,a4 as t}from"./chunks/framework.DtvhUNIn.js";const F=JSON.parse('{"title":"3.5git 与 github","description":"","frontmatter":{},"headers":[],"relativePath":"技术资源汇总(杭电支持版)/3.编程思维体系构建/3.5git与github.md","filePath":"技术资源汇总(杭电支持版)/3.编程思维体系构建/3.5git与github.md"}'),e={name:"技术资源汇总(杭电支持版)/3.编程思维体系构建/3.5git与github.md"},p=t(`<h1 id="_3-5git-与-github" tabindex="-1">3.5git 与 github <a class="header-anchor" href="#_3-5git-与-github" aria-label="Permalink to "3.5git 与 github""></a></h1><p>引自 nju-ics-pa</p><h2 id="光玉" tabindex="-1">光玉 <a class="header-anchor" href="#光玉" aria-label="Permalink to "光玉""></a></h2><p>想象一下你正在玩 Flappy Bird,你今晚的目标是拿到 100 分,不然就不睡觉。经过千辛万苦,你拿到了 99 分,就要看到成功的曙光的时候,你竟然失手了!你悲痛欲绝,滴血的心在呼喊着,“为什么上天要这样折磨我?为什么不让我存档?”</p><p><a href="https://flappybird.io/" target="_blank" rel="noreferrer">Play Happy Bird</a></p><p>想象一下你正在写代码,你今晚的目标是实现某一个新功能,不然就不睡觉。经过千辛万苦,你终于把代码写好了,保存并编译运行,你看到调试信息一行一行地在终端上输出。就要看到成功的曙光的时候,竟然发生了错误!你仔细思考,发现你之前的构思有着致命的错误,但之前正确运行的代码已经永远离你而去了。你悲痛欲绝,滴血的心在呼喊着,“为什么上天要这样折磨我?”你绝望地倒在屏幕前 ... ... 这时,你发现身边渐渐出现无数的光玉,把你包围起来,耀眼的光芒令你无法睁开眼睛 ... ... 等到你回过神来,你发现屏幕上正是那份之前正确运行的代码!但在你的记忆中,你确实经历过那悲痛欲绝的时刻 ... ... 这一切真是不可思议啊 ... ...</p><h2 id="人生如戏-戏如人生" tabindex="-1">人生如戏,戏如人生 <a class="header-anchor" href="#人生如戏-戏如人生" aria-label="Permalink to "人生如戏,戏如人生""></a></h2><p>人生就像不能重玩的 Flappy Bird,但软件工程领域却并非如此,而那不可思议的光玉就是“版本控制系统”。版本控制系统给你的开发流程提供了比朋也收集的更强大的光玉,能够让你在过去和未来中随意穿梭,避免上文中的悲剧降临你的身上。</p><p>没听说过版本控制系统就完成实验,艰辛地排除万难,就像游戏通关之后才知道原来游戏可以存档一样,其实玩游戏的时候进行存档并不是什么丢人的事情。</p><p>在本节,我们使用 <code>git</code> 进行版本控制。下面简单介绍如何使用 <code>git</code> :</p><h3 id="游戏设置" tabindex="-1">游戏设置 <a class="header-anchor" href="#游戏设置" aria-label="Permalink to "游戏设置""></a></h3><p>首先你得安装 <code>git</code> :</p><ul><li>Linux 下</li></ul><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Debian , Ubuntu</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">sudo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> apt</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> git</span></span></code></pre></div><ul><li>windows 下</li></ul><p>从这里下载 <a href="https://git-scm.com/download/win" target="_blank" rel="noreferrer">https://git-scm.com/download/win</a></p><p>下载完安装一路点 <code>next</code> 就行,什么配置也不用动。</p><p>安装好之后,你需要先进行一些配置工作。在终端里输入以下命令:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> config</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --global</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> user.name</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "Zhang San"</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # your name</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> config</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --global</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> user.email</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "zhangsan@foo.com"</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # your email</span></span></code></pre></div><p>经过这些配置,你就可以开始使用 <code>git</code> 了。</p><p>你会通过 <code>git clone</code> 命令来拉取远程仓库的代码,里面已经包含一些 <code>git</code> 记录,因此不需要额外进行初始化。如果你想在别的实验、项目中使用 <code>git</code> ,你首先需要切换到实验、项目的目录中,然后输入</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> init</span></span></code></pre></div><p>进行初始化。初始化后会创建一个隐藏的文件夹名为 <code>.git</code> git 会基于这个文件夹来进行版本控制功能。</p><h3 id="查看-commit-信息" tabindex="-1">查看 commit 信息 <a class="header-anchor" href="#查看-commit-信息" aria-label="Permalink to "查看 commit 信息""></a></h3><p>使用</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> log</span></span></code></pre></div><p>查看目前为止所有的 commit 记录。</p><p>(commit:提交)</p><p>使用</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> status</span></span></code></pre></div><p>可以得知,与当前存档相比,哪些文件发生了变化。</p><h3 id="提交" tabindex="-1">提交 <a class="header-anchor" href="#提交" aria-label="Permalink to "提交""></a></h3><p>你可以像以前一样编写代码。等到你的开发取得了一些阶段性成果,你应该马上进行“提交(commit)”。</p><p>首先你需要使用 <code>git status</code> 查看是否有新的文件或已修改的文件未被跟踪;若有,则使用 <code>git add</code> 将文件加入跟踪列表,例如</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> file.c</span></span></code></pre></div><p>会将 <code>file.c</code> 加入<strong>跟踪列表</strong>。如果需要一次添加所有未被跟踪的文件,你可以使用</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -A</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 或者</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> .</span></span></code></pre></div><p>但这样可能会跟踪了一些不必要的文件(二进制文件),例如编译产生的 <code>.o</code> 文件,和最后产生的可执行文件。事实上,我们只需要跟踪代码源文件即可。为了让 <code>git</code> 在添加跟踪文件之前作筛选,你可以编辑 <code>.gitignore</code> 文件(没有的话手动创建 文件名就叫这个),在里面给出需要被 <code>git</code> 忽略的文件和文件类型。</p><p><a href="https://www.toptal.com/developers/gitignore" target="_blank" rel="noreferrer">这个网页</a> 可以根据你搜索的语言来给你创建必要的 <code>.gitignore</code> 文件</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># .gitignore文件示例</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">.idea</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 编辑器配置</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">__pycache__</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 缓存文件夹</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">node_modules</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 某个可以拉取的模块文件夹</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">dist</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.local </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 以.local为后缀的文件</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">index.html</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 一个文件</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">file.o</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 一个编译后的文件</span></span></code></pre></div><p>建议把编译后的文件都加入 <code>.gitignore</code> 并在 <code>README.md</code> 文件中留下编译的详细操作流程,节省 <code>.git</code> 空间、符合提交规范。</p><p>把新文件加入跟踪列表后,使用 <code>git status</code> 再次确认。确认无误后就可以存档了,使用</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> commit</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -m</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "...comment..."</span></span></code></pre></div><p>提交工程当前的状态(注释)。其中 <code>...comment...</code> 是你本次提交的注释(一般在注释中简略写出本次提交干了什么)以下为注释规范,养成良好习惯请遵守:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">模板:</span></span>
|
||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">type</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">scope</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">): subject</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">type为commit的类型</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> feat:</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 新特性</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> fix:</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 修改问题</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> refactor:</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 代码重构</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> docs:</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 文档修改</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> style:</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 代码格式修改</span></span>
|
||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> test</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">:</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 测试用例修改</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> chore:</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 其他修改,</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 比如构建流程,</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 依赖管理.</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> perf:</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 性能提升的修改</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> build:</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 对项目构建或者依赖的改动</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> ci:</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> CI</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 的修改(ci是自动构建</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 感兴趣可以搜搜</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> github</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> workflow</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> )</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> revert:</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> revert</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 前一个</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> commit</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> (</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 撤销前一个commit</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> )</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">scope是文件名/模块名/影响的范围</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> 例如</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> schoolSchedule</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">subject为commit概述</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> 建议符合</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 50/72</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> formatting</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">例</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> feat</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">JoinForm</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">:</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> success</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> submit</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> tips</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">注意</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 冒号和subject之间要加空格</span></span></code></pre></div><p>其中详细内容可以参照 <a href="https://www.conventionalcommits.org/zh-hans/v1.0.0/" target="_blank" rel="noreferrer">约定式提交</a></p><p>附上 <a href="https://semver.org/lang/zh-CN/" target="_blank" rel="noreferrer">语义化版本 2.0.0 规范</a></p><p>你可以使用 <code>git log</code> 查看存档记录,你应该能看到刚才编辑的注释。</p><h3 id="读档-回溯到某一个-commit" tabindex="-1">读档(回溯到某一个 commit) <a class="header-anchor" href="#读档-回溯到某一个-commit" aria-label="Permalink to "读档(回溯到某一个 commit)""></a></h3><p>如果你遇到了上文提到的让你悲痛欲绝的情况,现在你可以使用光玉来救你一命了。首先使用 <code>git log</code> 来查看已有的存档,并决定你需要回到哪个过去。每一份存档都有一个 <code>hash code</code>,例如 <code>b87c512d10348fd8f1e32ddea8ec95f87215aaa5</code> , 你需要通过 <code>hash code</code> 来告诉 <code>git</code> 你希望读哪一个档。使用以下命令进行读档:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> reset</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --hard</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> b87c</span></span></code></pre></div><p>其中 <code>b87c</code> 是上文 <code>hash code</code> 的前缀:你不需要输入整个 hash code. 这时你再看看你的代码,你已经成功地回到了过去!</p><p>但事实上,在使用 <code>git reset</code> 的 <code>hard</code> 模式之前,你需要再三确认选择的存档是不是你的真正目标。如果你读入了一个较早的存档,那么比这个存档新的所有记录都将被删除!这意味着你不能随便回到“将来”了。</p><h3 id="分支" tabindex="-1">分支 <a class="header-anchor" href="#分支" aria-label="Permalink to "分支""></a></h3><p>当然还是有办法来避免上文提到的副作用的,这就是 <code>git</code> 的分支功能。使用命令:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> branch</span></span></code></pre></div><p>查看所有分支。其中 <code>master</code> 是主分支,使用 <code>git init</code> 初始化之后会自动建立主分支。</p><p>读档的时候使用以下命令:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> checkout</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> b87c</span></span></code></pre></div><p>而不是 <code>git reset</code> 。这时你将处于一个虚构的分支中,你可以</p><ul><li>查看 <code>b87c</code> 存档的内容</li><li>使用以下命令切换到其它分支</li></ul><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> checkout</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 分支名</span></span></code></pre></div><ul><li>对代码的内容进行修改,但你不能使用 <code>git commit</code> 进行存档,你需要使用</li></ul><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> checkout</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -B</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 分支名</span></span></code></pre></div><ul><li>把修改结果保存到一个新的分支中,如果分支已存在,其内容将会被覆盖</li></ul><p>不同的分支之间不会相互干扰,这也给项目的分布式开发带来了便利。有了分支功能,你就可以像第三视点那样在一个世界的不同时间 ( 一个分支的多个存档 ),或者是多个平行世界(多个分支)之间来回穿梭了。</p><h3 id="更多功能" tabindex="-1">更多功能 <a class="header-anchor" href="#更多功能" aria-label="Permalink to "更多功能""></a></h3><p>以上介绍的是 <code>git</code> 的一些基本功能,<code>git</code> 还提供很多强大的功能,例如使用 <code>git diff</code> 比较同一个文件在不同版本中的区别,使用 <code>git bisect</code> 进行二分搜索来寻找一个 bug 在哪次提交中被引入...</p><p>其它功能的使用请参考 <code>git help</code> , <code>man git</code> ,或者在网上搜索相关资料。</p><h2 id="全球最大男性交友网站-——-github" tabindex="-1">全球最大男性交友网站 —— Github <a class="header-anchor" href="#全球最大男性交友网站-——-github" aria-label="Permalink to "全球最大男性交友网站 —— Github""></a></h2><div class="tip custom-block"><p class="custom-block-title">🤡</p><p>想象一下你正在进行人生中第一次软件开发的小组合作。</p><p>你把任务分配好让组员去写代码中的某一个模块。组员写好之后发给你。</p><p>你一看,通过 QQ 发过来的是一个文件啊文件 比如说 <code>学生管理模块.c</code> 你打开一看,我去是<strong>乱码</strong>。</p><p>你废了九牛二虎之力把他的 GBK 编码改成 UTF8 之后,细细地品鉴这段代码,发现我去有严重逻辑错误,而且代码很不规范。</p><p>你通过 QQ 告诉他,这一行有问题,能不能改一下。他说,好的我改一下。</p><p>然后又发了文件啊文件给你,如此反复循环,你俩已经互相传了好几百个源代码文件,很没效率!</p></div><blockquote><p>通过 Git 版本控制管理自己的代码,再通过 Github 来发布、同步互联,是一个很好的解决方案!</p></blockquote><p>简介</p><p>作为开源代码库以及版本控制系统,Github 拥有超过 900 万开发者用户。随着越来越多的应用程序转移到了云上,Github 已经成为了管理软件开发以及发现已有代码的首选方法。</p><p>页面大概是这样(老图):</p><p><img src="https://cdn.xyxsw.site/boxcnHemi9HkeAG1fgoznHbHLrc.png" alt=""></p><h3 id="git-和-github" tabindex="-1">Git 和 Github <a class="header-anchor" href="#git-和-github" aria-label="Permalink to "Git 和 Github""></a></h3><p><a href="https://github.com/" target="_blank" rel="noreferrer">GitHub</a>是一个面向开源及私有软件项目的托管平台,因为只支持 Git 作为唯一的版本库格式进行托管,故名 GitHub。</p><h3 id="git-绑定-github" tabindex="-1">Git 绑定 Github <a class="header-anchor" href="#git-绑定-github" aria-label="Permalink to "Git 绑定 Github""></a></h3><div class="tip custom-block"><p class="custom-block-title">🤗</p><p>下面将教学如何注册这个网站,并给<a href="https://github.com/camera-2018/hdu-cs-wiki" target="_blank" rel="noreferrer">本项目</a>点一个小小的 kita kita 的 star🎇</p></div><h4 id="第一步-注册账号" tabindex="-1">第一步:注册账号 <a class="header-anchor" href="#第一步-注册账号" aria-label="Permalink to "第一步:注册账号""></a></h4><p>(<a href="https://github.com/" target="_blank" rel="noreferrer">GitHub 官网</a>)右上角点击 sign up 会有一个非常酷炫的界面指引你注册 🥳</p><p>他会用一个像是命令行交互的方式引导注册,你需要依次填写 <code>邮箱</code> 、<code>密码</code> 、 <code>用户名(此为 ID 非昵称)</code> 、<code>是否同意邮箱广告推送</code> 、<code>机器验证码</code> 之后创建账户,随后会给你填写的邮箱发送验证码,填写注册。</p><p>随后是一个欢迎问卷😋随便填写、如果他问你什么 PRO Plan 选择 free 不付费就好。</p><p>最后你访问<a href="https://github.com" target="_blank" rel="noreferrer">GitHub 官网</a>应该会显示你的 dashboard 管理台界面</p><h4 id="第二步-选择你拉取仓库的方式" tabindex="-1">第二步:选择你拉取仓库的方式 <a class="header-anchor" href="#第二步-选择你拉取仓库的方式" aria-label="Permalink to "第二步:选择你拉取仓库的方式""></a></h4><p>点开 github 某个仓库的绿油油的 <code><>Code</code> 按钮,你会发现有三种 clone 方式。</p><p>分别为</p><ul><li>https(基本无配置,有图形化界面就能用)</li><li>ssh(有公私钥设置,没有图形化界面也能用)</li><li>gh-cli(github 出品的 cli 工具)</li></ul><p><img src="https://cdn.xyxsw.site/Snipaste_2023-08-27_14-06-28.png" alt=""></p><h4 id="【https-方法配置】账号绑定-github" tabindex="-1">【https 方法配置】账号绑定 github <a class="header-anchor" href="#【https-方法配置】账号绑定-github" aria-label="Permalink to "【https 方法配置】账号绑定 github""></a></h4><p>在命令行配置好你的 id 和邮箱</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> config</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --global</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> user.name</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "Zhang San"</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # your name</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> config</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --global</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> user.email</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "zhangsan@foo.com"</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # your email</span></span></code></pre></div><p>在 GitHub 主页,找到 <code>New</code> 或者 <code>Create repository</code> 一个绿色的按钮,创建一个新的仓库</p><p><img src="https://cdn.xyxsw.site/boxcn5sVnE76FYpVW2RDxtWDiZc.png" alt=""></p><p>然后填上这个仓库的大名就可以创建了</p><p><img src="https://cdn.xyxsw.site/boxcnsN133WrLrbxsX8JgvsQmif.png" alt=""></p><p>进入你新创建的仓库</p><p>跟随新创建之后的指引,<code>…or create a new repository on the command line</code> 内他描述了如何创建一个文件夹、创建一个 README.md 的文件,然后和 github 仓库绑定。</p><p>push 的时候 github 会弹窗索要你的 github 个人信息,如下图</p><p><img src="https://cdn.xyxsw.site/image_32.png" alt=""></p><p>输入你的 github 用户名</p><p><img src="https://cdn.xyxsw.site/image_33.png" alt=""></p><p>但如果这个时候输入你的账户密码,就会出现如下提示</p><p><img src="https://cdn.xyxsw.site/image_35.png" alt=""></p><p>这是因为 github 在 2021 年 8 月 13 日之后移除了对密码验证的支持,你需要使用令牌认证的方式</p><p>进入个人设置,拉到最底下</p><p><img src="https://cdn.xyxsw.site/image_36.png" alt=""></p><p>选择</p><p><img src="https://cdn.xyxsw.site/image_37.png" alt=""></p><p><img src="https://cdn.xyxsw.site/image_38.png" alt=""></p><p>会看到这样一个界面</p><p><img src="https://cdn.xyxsw.site/image_39.png" alt=""></p><p>可以随便起一个名字,选择 token 的有效期,然后给这个 token 一些权限,如果不清楚这些选项分别代表什么意思的话,把 repo 这个勾选一般就足够了。</p><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>这个令牌只会在生成时可见,之后就不会再显示了,请做好复制并保存</p></div><p>这样我们就可以使用 token 来进行 https 方法绑定 github 账号</p><p><img src="https://cdn.xyxsw.site/image_40.png" alt=""></p><h4 id="【ssh-方法配置】创建-ssh-key-并获取公钥" tabindex="-1">【ssh 方法配置】创建 SSH Key 并获取公钥 <a class="header-anchor" href="#【ssh-方法配置】创建-ssh-key-并获取公钥" aria-label="Permalink to "【ssh 方法配置】创建 SSH Key 并获取公钥""></a></h4><p>先在 <code>C:\\Users\\用户名\\.ssh</code> 下找有没有 <code>id_rsa</code> 和 <code>id_rsa.pub</code> 文件</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>这里 <code>.ssh</code> 文件夹是一个隐藏文件夹</p><p>如何显示隐藏文件夹请搜索互联网或看这篇文章 <a href="https://support.microsoft.com/zh-cn/windows/%E6%98%BE%E7%A4%BA%E9%9A%90%E8%97%8F%E7%9A%84%E6%96%87%E4%BB%B6-0320fe58-0117-fd59-6851-9b7f9840fdb2" target="_blank" rel="noreferrer">support microsoft 显示隐藏的文件</a></p></div><p>如果有就直接跳过这一步</p><p>如果没有,打开 Shell(Windows 下打开 Git Bash <em>前提是你已经安装好了 git 在桌面右键应该会有 Git bash here 选项</em>),创建 SSH Key:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">ssh-keygen</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -t</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> rsa</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -C</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "youremail@example.com"</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # youremail为你注册用的电子邮件地址</span></span></code></pre></div><p>打开 <code>id_rsa.pub</code>,复制里面的内容</p><h4 id="【ssh-方法配置】绑定-github" tabindex="-1">【ssh 方法配置】绑定 Github <a class="header-anchor" href="#【ssh-方法配置】绑定-github" aria-label="Permalink to "【ssh 方法配置】绑定 Github""></a></h4><p>登陆 <code>GitHub</code>,点击右上角自己的头像,打开 <code>settings</code></p><p><img src="https://cdn.xyxsw.site/Snipaste_2023-07-16_17-12-32.png" alt=""></p><p>然后打开左侧栏 <code>SSH and GPG keys</code> 页面</p><p><img src="https://cdn.xyxsw.site/boxcn1HbQct335qvZ71tGNu7jne.png" alt=""></p><p>然后,点 <code>New SSH Key</code>,填上任意 Title,在 Key 文本框里粘贴 <code>id_rsa.pub</code> 文件的内容即可</p><h4 id="【ssh-方法配置】创建仓库并和本地绑定" tabindex="-1">【ssh 方法配置】创建仓库并和本地绑定 <a class="header-anchor" href="#【ssh-方法配置】创建仓库并和本地绑定" aria-label="Permalink to "【ssh 方法配置】创建仓库并和本地绑定""></a></h4><p>绑定完 GitHub 然后你可以创建仓库了</p><p>首先在 GitHub 主页,找到 <code>New</code> 或者 <code>Create repository</code> 一个绿色的按钮,创建一个新的仓库</p><p><img src="https://cdn.xyxsw.site/boxcn5sVnE76FYpVW2RDxtWDiZc.png" alt=""></p><p>然后填上这个仓库的大名就可以创建了</p><p><img src="https://cdn.xyxsw.site/boxcnsN133WrLrbxsX8JgvsQmif.png" alt=""></p><p>根据之前学习的方法在本地创建完 git 仓库之后</p><p>在 git bash 中输入:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> remote</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> origin</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> git@github.com:yourname/gitexample.git</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 请将yourname换成自己的id</span></span></code></pre></div><p>就可以绑定</p><p>或者是直接 git clone 下来</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> clone</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> git@github.com:yourname/gitexample.git</span></span></code></pre></div><p>或者你可以跟随新创建之后的指引,<code>…or create a new repository on the command line</code> 内他描述了如何创建一个文件夹、创建一个 README.md 的文件,然后和 github 仓库绑定。</p><p><img src="https://cdn.xyxsw.site/Snipaste_2023-07-16_17-19-18.png" alt=""></p><h3 id="下载代码——clone" tabindex="-1">下载代码——clone <a class="header-anchor" href="#下载代码——clone" aria-label="Permalink to "下载代码——clone""></a></h3><p>拷贝他人存档也未尝不可,而我们如果用他人存档时,次次都需要一样一样的拷贝文件和代码未免太过折磨,下面简单介绍如何使用</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> clone</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> <</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">ur</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">l</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">></span></span></code></pre></div><p>接下去对着下面这个 GitHub 的代码使用一下</p><p>首先,代码的 url 在下图所示的位置</p><p><img src="https://cdn.xyxsw.site/boxcnTiaT2EnNfKVkretPsyajVd.png" alt=""></p><p>然后复制完代码后切换回我们的命令行</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># powershell or cmd</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 进入(cd)到想要存储该代码的地方(父文件夹目录)</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> clone</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> https://github.com/camera-2018/git-example.git</span></span></code></pre></div><blockquote><p>这里使用的<a href="https://github.com/camera-2018/git-example" target="_blank" rel="noreferrer">例子</a>是我的仓库,当然你也可以用你自己的仓库。</p><p>如果你使用我的仓库的话,你 clone 过后在你自己电脑更改的文件等东西,是没法直接提交回来的(因为你没有我仓库管理权限)</p><p>如果你非要给我的仓库添加东西呢 也是可以,参照下面的 PR(Pull Request)教程</p></blockquote><p>一阵抽搐过后就下载好了</p><p><img src="https://cdn.xyxsw.site/boxcn8aRDQpe7uuDxFv9v1WvZ4c.png" alt=""></p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>用完之后别忘记给 camera-2018 点个 follow 😋 <code>呃呃 follow 没用 star 有用</code></p></div><p>注意:失败就重试吧 还失败建议使用魔法(非国内网你懂得)</p><h3 id="提交和合并分支" tabindex="-1">提交和合并分支 <a class="header-anchor" href="#提交和合并分支" aria-label="Permalink to "提交和合并分支""></a></h3><p>如图 我在仓库里新建了 <code>helloworld.c</code> 并且写了一些代码</p><p><img src="https://cdn.xyxsw.site/boxcnZpPsp4FP78auolzHvCKP0g.png" alt=""></p><p>接下来是提交操作</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> status</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> #看一下文件暂存区</span></span></code></pre></div><p><img src="https://cdn.xyxsw.site/boxcnm4R1ZN0WeUBuYht6zge7pd.png" alt=""></p><p>红色表示文件没有提交到暂存区 我们要提交</p><p>接下来</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> .</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> #将没有提交的所有文件加入暂存区</span></span></code></pre></div><p><img src="https://cdn.xyxsw.site/boxcnYHd076RAqfDmHjbUkeNSvg.png" alt=""></p><p>绿色表示所有文件已加入暂存</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> commit</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -m</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "feat(helloworld): add helloworld file"</span></span></code></pre></div><p>将刚才加入暂区的文件发起了一个提交,提交注释(commit message)是 <code>feat(helloworld): add helloworld file</code></p><p><img src="https://cdn.xyxsw.site/boxcni2dupDzNO8qTWPAxS5c67b.png" alt=""></p><ol><li><p>如果这是你自己的仓库有权限(本人仓库或 Collaborators 有权限的情况下)你就可以直接使用</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> push</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> origin</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> main</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # origin 是第四步里 remote add 起的远程名字</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # main 是分支名</span></span></code></pre></div><p>上传本次提交</p><p><img src="https://cdn.xyxsw.site/boxcnNBu1EJnva4EkyQZAVlwGMe.png" alt=""></p></li><li><p>如果你没有本仓库的主分支提交权限 可以提交 PR(Pull Requests)</p><p><strong>第一种情况:这里假设我是协作者 无主分支权限,但有创建分支权限</strong></p><p>首先创建一个新分支 命名为 <code>yourname-dev</code></p><p><img src="https://cdn.xyxsw.site/boxcnaS7aOzdt31vsZZx8R1s33e.png" alt=""></p><p>然后按照上面的方法 <code>git clone</code> 并切换到你刚创建的分支</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> switch</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> camera-2018-dev</span></span></code></pre></div><p>然后提交一个文件,这里直接使用 vscode 自带的 git 工具试试(很方便、不用敲命令行)</p><p><img src="https://cdn.xyxsw.site/boxcnmwlYWOzwPbNqTAuSZK9dW3.png" alt=""></p><p>点暂存所有更改 写好 comment 之后点提交</p><p><img src="https://cdn.xyxsw.site/boxcnfcCnAdtdX2oyLIC3NibVnf.png" alt=""></p><p>最后点同步更改上传</p><p><img src="https://cdn.xyxsw.site/boxcn9DSPlFgG2WMZhTOE9Zhzgb.png" alt=""></p><p>如果是你提交 在 github 上会显示这个 快捷创建 pr 的按钮</p><p><img src="https://cdn.xyxsw.site/boxcnHd7Qfi8C0Y7V2Ot5ii4vpf.png" alt=""></p><p><img src="https://cdn.xyxsw.site/boxcnyt3eeZQyN8b1xM1WjDrTGe.png" alt=""></p><p>点它创建 PR</p><p><img src="https://cdn.xyxsw.site/boxcnJOjh1Zfp9tCd3llL9NsEzb.png" alt=""></p><p>这样管理本仓库的人看到 pr 请求就可以 merge 合并辣</p><p><img src="https://cdn.xyxsw.site/boxcnBMq0sw6c48jvjdPJwmAGtZ.png" alt=""></p><p><img src="https://cdn.xyxsw.site/boxcngNZOSnYUtCKH6pm8UaUMNd.png" alt=""></p><p>实际合作过程中可能会出现代码冲突无法 merge 的情况 😋 遇到了自己去 STFW 吧</p><p><strong>第二种情况:我不是协作者、我什么权限也没有,我看了这个 public 项目后觉得很好但是有一些问题,我要给他贡献一些代码</strong></p><p>可以点击仓库右上角的 fork</p><p><img src="https://cdn.xyxsw.site/Snipaste_2023-07-16_17-34-21.png" alt=""></p><p>这样会在你的名下多出来一份这个同名仓库,而这个仓库你是拥有所有权限的,你可以 clone 你这个同名仓库,更改代码,提交代码之后</p><p>回到源仓库点击 Pull Request 然后创建 PR <code>New pull request</code></p><p>最上面会提示你说</p><p>Comparing changes Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also <strong>compare across forks</strong> .</p><p>点击小蓝字 <code>compare across forks</code> 这会让你对比你 fork 仓库和源代码仓库的提交记录,之后就可以创建 PR 了,原作者看到了会合并。</p></li></ol><h3 id="其他功能" tabindex="-1">其他功能 <a class="header-anchor" href="#其他功能" aria-label="Permalink to "其他功能""></a></h3><p>问题跟踪:GitHub 的问题跟踪功能可用于报告软件中的问题、错误和功能请求,并进行讨论、分配和解决。</p><p>Wiki 页面:用户可以创建和编辑与存储库相关的 Wiki 页面,用于提供项目的文档、指南、示例代码等。</p><p>Pull 请求(Pull Requests):使用者可以将自己的代码变更提交给其他项目的所有者,并请求合并到主干代码中。</p><p>项目管理:GitHub 提供项目管理功能,包括任务管理、里程碑(milestones)、项目板(project boards)等工具,可用于组织和跟踪项目的进展。</p><p>部署功能:GitHub 可以与各种持续集成和部署(CI/CD)工具集成,帮助开发人员自动化构建、测试和部署他们的应用程序。</p><p>统计信息:GitHub 提供有关存储库活动和贡献者的统计信息,例如提交图表、活动日历等,有助于跟踪和分析项目的发展。</p><p>社交功能:用户可以关注其他用户、存储库和组织,接收他们的更新和活动通知,并与他们进行交流和讨论。</p><p>代码审核(Code Review):GitHub 的 Pull 请求功能允许团队成员对代码进行审查和讨论,以确保代码质量和最佳实践。</p><p>集成和扩展:GitHub 支持与其他工具和服务的集成,例如持续集成(CI)工具、代码质量检查工具、项目管理工具等。</p><p>页面托管:GitHub Pages 功能使您可以托管静态网站和文档,这在展示和共享项目文档、演示和博客等方面非常有用。</p><p>然后还有一些比如说 Copilot 之类的有用的功能。</p><p><a href="https://github.com/features/copilot" target="_blank" rel="noreferrer">Copilot</a> 是 GitHub 推出的一款基于人工智能技术的代码辅助工具。它使用了机器学习模型 codex,并针对编写代码的场景进行了训练。</p><p>Copilot 可以根据上下文和输入的提示,为开发人员生成代码建议和自动完成。它可以通过分析现有代码库、注释和上下文来生成代码片段,提高编码效率并减少重复劳动。</p><h2 id="copilot-白嫖教程" tabindex="-1"><a href="https://github.com/features/copilot" target="_blank" rel="noreferrer">Copilot</a> 白嫖教程 <a class="header-anchor" href="#copilot-白嫖教程" aria-label="Permalink to "[Copilot](https://github.com/features/copilot) 白嫖教程""></a></h2><p>你需要学生认证你的 Github 账号。</p><p>地址在 <a href="https://education.github.com/students" target="_blank" rel="noreferrer">https://education.github.com/students</a> 点击 <code>Sign up for Global Campus</code> 来开始认证,下面会让你输入学校,绑定学校邮箱(杭电为 @hdu.edu.cn 结尾的邮箱)(如果你是杭电新生的话,可能要等到智慧杭电账号发放时才能注册杭电邮箱)并上传<strong>学生证明</strong>(从 21 年开始这个验证越来越严,如果不过的话你可以尝试 <code>学生证第一页</code>、<code>学生证第一页英文翻译(像有道翻译那样 P 图上去)</code>、<code>学信网学籍证明英文翻译(英文也是 P 上去)</code>)</p><p>通过了的话你的账户会有 Pro 标识 然后你可以享受的 Github 学生包里包含<a href="https://education.github.com/pack" target="_blank" rel="noreferrer">这些东西</a></p><p>里面比较有用的有</p><ul><li>JETBRAINS 全家桶的免费用(我没用,我用的是 jb 自己家的验证方式,不是 github)</li><li>name.com 家的一个一年期的免费域名(大概价值吧 六七十块钱?)</li><li>github 的容量扩容和 actions 时间扩容、Codespaces 时间延长、Pages 扩容(没啥用倒是)</li><li>Termius 学生包,这是我很喜欢用的终端软件,有学生包可以多端同步 ssh 的账号密码啥的,很方便。</li><li>Sentry 容量扩容</li><li>Copilot 免费用</li></ul><p>你可以在 <code>settings</code> 里看到你的 copilot,配置如下</p><p><img src="https://cdn.xyxsw.site/Snipaste_2023-07-16_17-59-49.png" alt=""></p><p>然后就可以在你喜欢的 IDE 或编辑器上下载 Copilot 插件,来启用他。</p><p><img src="https://cdn.xyxsw.site/Snipaste_2023-07-16_18-02-19.png" alt=""></p>`,196),n=[p];function h(l,d,o,c,k,r){return a(),i("div",null,n)}const b=s(e,[["render",h]]);export{F as __pageData,b as default};
|