开源:我的第一个 Pull Request
在我发布了一个创建静态网站生成器 (SSG) 的开源项目后,我的第二个实验任务是为我的搭档的同一个项目添加新功能并提交一个 Pull Request。我的搭档 Anatoliy 也用 JavaScript 创建了一个 SSG,他将文本文件转换为 HTML 文件的方法条理清晰、条理分明。
- Anatoliy 在 GitHub 上的项目:https://github.com/aserputov/qck-ssg-final
- 我在GitHub上的项目:https://github.com/MizuhoOkimoto/pajama-ssg
新功能
有两个必需功能。
- 修改文件处理方式,使其同时支持 .txt 文件和 .md 文件,并将 Markdown 的一个方面解析为 HTML。
- 实现 Markdown 语法特性之一,即斜体、粗体、标题 1。
首先,我使用 Fork 工具从他的 GitHub 仓库克隆到我的 GitHub 仓库。然后,我将其克隆到我的本地计算机,并使用以下命令创建了一个用于我工作的新分支git checkout -b issue-5。
初步想法
上周我测试并审查了他的项目,当时我觉得我已经理解了他的思路和代码结构。然而,当我开始尝试实现新功能时,却遇到了瓶颈。我不得不请他解释一下,他竟然发给我一些视频来讲解!(当时是凌晨两点!谢谢你,我亲爱的朋友😭)
我和他沟通后,最终通过添加读取 .md 文件的函数,并使用替换方法将其替换为 Markdown,实现了新功能。不幸的是,我又遇到了另一个问题。我在本地全局安装了 Prettier,所以当我输入**粗体字时,它会变成-或\*,因此我无法测试这些实现。
提交拉取请求
完成实现后,我在我的 fork 仓库中提交了一个pull request。 在终端中,我将分支切换到 issue-5,添加了 JavaScript 文件并更新了 README.md,然后提交并推送到 issue-5 分支。 我在 GitHub 上发布了一个示例,并附上了我的实现内容,请他审核并合并。
收到拉取请求
我收到了Anatoliy 的pull request,然后发现了一个问题。在他 fork 我的仓库之后,我更新了我的项目,所以出现了一些冲突。我担心合并他的代码会丢失我的更新,所以我向我的教授请教,他指导我如何进行合并。
我是如何合并和重新定基的
首先,我在本地计算机上克隆了项目仓库,并使用 `git clone` 命令检查git status。结果显示`git clone` 为空Your branch is up to date with 'origin/main'。然后,我查看了 Git 远程配置(` git remote configuration` $git remote),添加了 Anatoliy 的仓库并将其命名为anatoliy`my- $git remote add anatoliy https://github.com/aserputov/pajama-ssg.gitrepository`。添加完他的仓库后,我再次检查了远程配置,结果显示 `git remote configuration` 为空anatoliyorigin。于是,我将远程仓库中的提交、文件和引用下载到本地仓库(`git download` $git fetch anatoliy),并检查了过往的提交。 之后,我回到主分支(`git branch` ),合并了 issue-5(` git commit -a issue-5` )。 由于还有一些未合并的文件,我创建了一个拉取请求,并在 GitHub 上提交了更改,以便检查哪些应该合并,哪些不应该合并。例如:`git commit -a issue-5`和 ` git commit -b issue-5`。 提交后(没有添加任何消息),我使用 `git clone` 命令检查,发现所有内容最终都已合并。
$git checkout main$git merge issue-5
$ git rm .\.DS_Store$git add README.md$git commit$git log
关闭拉取请求
我的教授教我如何根据拉取请求发送更改请求。首先,在拉取请求页面,我点击“查看更改”按钮,检查更改,然后进行审核并提交。
结论:
我以前不喜欢 Git,因为它很复杂,而且总是出现一堆错误信息。但是,在听了教授的课并完成了这个作业之后,我开始喜欢上它了。我觉得 Git 简直太神奇了💥 和我的搭档合作以及得到教授的帮助都非常棒。我的项目
还有一些需要改进的地方,我会尽快更新👍