first-contributions 在 Windows 上使用 Git Bash 完成首次开源贡献:Fork → Clone → Commit → Push → PR 全流程实操
2026/9/19 13:00:11 网站建设 项目流程

first-contributions 在 Windows 上使用 Git Bash 完成首次开源贡献:Fork → Clone → Commit → Push → PR 全流程实操

【免费下载链接】first-contributions🚀✨ Help beginners to contribute to open source projects项目地址: https://gitcode.com/gh_mirrors/fi/first-contributions

本文基于 first-contributions 仓库的孟加拉语版 Git Bash 教程(git-bash-windows-tutorial-bn.md)整理成文,完整覆盖 Windows 平台下使用 Git Bash 命令行完成一次标准开源贡献的全部步骤:Fork 仓库、克隆你的 Fork、创建分支、修改并 Commit Contributors.md、Push 到远程、发起 Pull Request。读完后,你可以独立复现整条fork → clone → edit → PR流程,并理解每一步命令背后的作用与仓库结构上的依据。

教程定位:为什么从"改一行名字"开始

first-contributions 项目的目标是降低新手第一次参与开源的门槛。正如 README.md 所述,该项目希望"simplify and guide the way beginners make their first contribution"(简化并引导新手做出第一次贡献)。对于命令行初学者,仓库提供了 GUI 工具的替代教程(见 docs/gui-tool-tutorials/github-desktop-tutorial.md),而本文对应的 Git Bash 版本则面向愿意直接使用命令行的 Windows 用户。

这个项目的核心练习目标非常明确:在 Contributors.md 文件末尾添加自己的名字。这是一个单行列表格式的 Markdown 文件,全文件接近 6000 行,每行一条贡献者记录,是典型的"低风险、零冲突概率"首贡献目标——这也解释了为什么教程选择它作为练习对象,而不是改动任何有逻辑意义的文件。

完成本篇教程,你将掌握以下能力:

  • 在 Windows 上用 Git Bash 打开终端并导航目录(cd);
  • 区分"主仓库"与"自己的 Fork",正确地从 Fork 克隆(git clone);
  • 创建并切换到贡献分支(git checkout -b);
  • 查看、暂存、提交本地变更(git status/git add/git commit);
  • 推送分支到远程(git push)并通过 GitHub 界面发起 Pull Request。

环境准备:确保 Windows 上已安装 Git Bash

Git Bash 是 Git for Windows 安装包自带的终端工具,基于 MSYS2 提供类 Unix shell 体验。如果你还没有安装,请从 Git 的官方安装渠道获取 Git for Windows 安装包并安装;安装完成后,在 Windows 资源管理器中右键菜单或开始菜单中即可找到 "Git Bash" 入口。

提示:如果右键菜单中没有 Git Bash 选项,可以在 Git 安装目录的cmd文件夹中手动运行git-bash.exe,或使用开始菜单搜索 "Git Bash"。

Windows 下 Git Bash 的终端界面与 Linux/macOS 的 shell 不同,它支持cdls等常用命令,且目录路径既可以用 Windows 风格(C:\Users\...)也可以用类 Unix 风格(/c/Users/...),后文中均用cd <folder>的通用形式表示。

第一步:Fork 这个仓库

在仓库页面右上角点击Fork按钮。这会在你的账号下创建该仓库的一份完整副本(fork)。

Fork 是整个贡献流程的起点,原因是权限模型:主仓库(first-contributions)通常不允许陌生账号直接推送分支。有了自己账号下的副本,你就可以在副本上自由创建分支、推送提交,最后再通过 Pull Request 把变更合并回主仓库。这也是后文反复强调"必须克隆自己的 Fork 而不是主仓库"的原因。

第二步:克隆仓库到本地

⚠️重要:不要克隆主仓库,必须克隆你 Fork 出来的副本。如果你克隆了主仓库,后续git push会因为缺少写权限而失败。

完整操作步骤(对应原文档的 5 个子步骤):

  1. 打开你 Fork 出的仓库页面,点击Code按钮,复制显示的克隆链接(HTTPS 或 SSH 格式均可)。

    主仓库 README.md 中给出的克隆示例为 SSH 形式:

    git clone git@github.com:your-username/first-contributions.git

    其中your-username是你的 GitHub 用户名。若你没有配置 SSH 密钥,建议直接复制 Code 按钮下的 HTTPS 链接,首次推送时会以弹窗方式提示输入凭据,更省事。

  2. 打开 Git Bash 终端。

  3. 进入你打算存放项目的目录:

    cd <folder>

    例如把项目放在~/projects下就执行cd projects

  4. 用刚才复制的链接克隆仓库:

    git clone <repo-url>
  5. 进入克隆下来的目录,并可以用 VS Code 打开它:

    cd first-contributions code .

    原文档建议用 VS Code 打开仓库,因为它能直观地看到 Contributors.md 文件并以编辑器的 diff 视图确认改动。code .是 VS Code 的命令行入口(需在 VS Code 中通过 "Shell Command: Install 'code' command in PATH" 启用)。

克隆完成后,本地仓库会自带一个名为origin的远程指向——注意它指向的是你的 Fork,而不是主仓库。这一点对后面git push origin <branch-name>的行为至关重要:推送目标是你自己的副本,因此不会有权限问题。

第三步:创建一个新分支

从克隆好的仓库根目录出发,创建并切换到一个新分支:

git checkout -b <branch-name>

👉 教程建议分支名采用add-your-name格式,例如:

git checkout -b add-james-smith

git checkout -b做两件事:以当前 HEAD 为基础新建分支,并把工作区切换到该分支。从源码结构看,主仓库 README.md 的英文版教程推荐使用更新的git switch -c <branch-name>命令,并说明若你的 Git 版本较老、报 "switchis not a git command" 错误时,就改用git checkout -b。也就是说两者等价,checkout -b兼容性更好,switch -c是新版 Git 的语义化命令。本篇 Git Bash 教程采用checkout -b是出于对新手的保守考虑,两者选其一即可。

扩展阅读:仓库的附加材料中专门有一篇讲解为什么要在独立分支上做修改(why-using-branches.zh-cn.md),以及合并与变基(rebase)的区别(rebase-vs-merge.md)。

第四步:修改文件并提交(Commit)

  1. 打开 Contributors.md。
  2. 滚动到文件末尾,追加一行你的名字。
  3. 保存文件。

原文档给出的示例格式是一条 Markdown 列表项,由"显示名 + 指向个人主页的链接"组成,形如:

- James Smith

你只需替换成自己的名字和主页地址,保持-前缀的列表格式与前后行一致即可。由于该文件已有近 6000 行记录,把新行追加在文件末尾可以最大限度避免与其他贡献者产生合并冲突。

接下来用命令确认并固化这次改动:

检查变更状态:

git status

git status会列出未暂存(unstaged changes)和已暂存(changes to be committed)的文件。此时应看到Contributors.md出现在 "modified but not staged for commit" 区域。

把变更加入暂存区:

git add Contributors.md

原文档写的是git add file-name,这里的file-name就是 Contributors.md。执行后git status中的该文件会转入 "changes to be committed" 区域。

提交:

git commit -m "Add your-name to Contributors list"

👉 把提交信息中的your-name替换成你的名字。-m参数指定提交说明;遵循"动词开头的祈使句"惯例(如 Add / Update)是这个项目的通行写法。

查看提交历史:

git log --oneline

--oneline让每条提交压缩为一行(短哈希 + 提交信息),方便快速核对刚提交的记录是否在最顶端。这个命令在仓库的多种语言附加材料(如 check-commit-log.zh-cn.md)中也有讲解,是日常查看历史的推荐方式。

第五步:Push 到远程

确认所有步骤完成后,把分支推送到远程:

git push origin <branch-name>

例如:

git push origin add-james-smith

origin是克隆时自动配置的远程名,指向你的 Fork;<branch-name>是你在本地刚创建的分支名。首次推送时,如果本地分支与远程没有建立跟踪关系,Git 会提示确认(set upstream),选择确认即可。推送成功后,在你的 Fork 仓库页面就能看到这条新分支。

第六步:发起 Pull Request(PR)

  1. 打开你在 GitHub 上的 Fork 仓库页面,在分支提示条上点击Compare & pull request按钮;
  2. 确认源分支(你的add-your-name)与目标分支(主仓库的main)无误后,点击Create/Submit pull request
  3. 提交 Pull Request。

提交后,仓库维护者会审查你的 PR。由于只是追加一行名字,通常会被快速合并进主项目的主分支(main/master)。PR 被合并后,你会收到邮件通知——至此完成第一次完整的开源贡献。

命令速查表

步骤命令作用
进入目录cd <folder>切换到项目存放目录
克隆git clone <repo-url>把你的 Fork 克隆到本地
建分支git checkout -b <branch-name>新建并切换到add-your-name风格分支
查看状态git status确认哪些文件被修改
暂存git add Contributors.md把改动加入暂存区
提交git commit -m "Add your-name to Contributors list"记录一次提交
查历史git log --oneline单行式查看提交列表
推送git push origin <branch-name>把分支推送到你的 Fork

出错排查与后续学习路径

推送被拒绝(permission denied / 403):几乎总是因为克隆了主仓库而不是自己的 Fork。对照第二步检查git remote -vorigin应指向your-username/first-contributions,而不是项目方账号。

git push提示没有上游分支:执行git push -u origin <branch-name>建立跟踪关系,后续直接git push即可。

想回退或修改刚才的提交:仓库的附加材料提供了系统性的 Git 工作流场景文档,例如撤销提交(undoing-a-commit.md)、修改提交信息(amending-a-commit.md)、变基与压缩提交(squashing-commits.md)。

想换一种工具练习同一流程:同一流程在仓库中有多个平行版本可对照学习——

  • 英文 Git 命令行版:git-cli-tutorial-bengali.md 是同一 Git Bash 流程的早期孟加拉语版本,而 github-cli-tutorial.md 则演示了用 GitHub CLI(gh)完成同样流程的方式;
  • 简体中文 Git Bash 版:git-bash-windows-tutorial.zh-cn.md;
  • GUI 工具版(GitHub Desktop、VS Code、GitKraken 等):见 docs/gui-tool-tutorials/ 目录下的各教程,主 README.md 末尾的 "Tutorials using other tools" 一节是完整索引。

保持 Fork 与主仓库同步:当你做了多次贡献后,Fork 会逐渐落后于主仓库,可参考 keeping-your-fork-synced-with-this-repository.md 学习同步方法。

到这里,你已经完整走过fork → clone → branch → commit → push → PR这条标准开源贡献流水线。第一次贡献的意义不在于改动大小,而在于建立对 Git 协作模型(分支隔离、暂存区、远程推送、Pull Request 合并)的肌肉记忆——这些能力可以直接迁移到任何开源项目的首次贡献中。

【免费下载链接】first-contributions🚀✨ Help beginners to contribute to open source projects项目地址: https://gitcode.com/gh_mirrors/fi/first-contributions

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询