使用 Git 向 GDevelop 提交代码改动与创建 Pull Request 的完整指南【免费下载链接】GDevelop Open-source, cross-platform 2D/3D/multiplayer game engine designed for everyone.项目地址: https://gitcode.com/GitHub_Trending/gd/GDevelop本文是面向 GDevelop 贡献者的 Git 协作实操指南围绕开源游戏引擎 GDevelop 仓库的源码提交流程展开从 Fork 与 Clone 仓库、配置origin/upstream双远程到基于master分支创建特性分支、提交与推送改动、通过 Pull Request 合入上游的完整生命周期。读完本文你将掌握一套可复制的 Git 分支工作流能够安全地参与 GDevelop含 newIDE 编辑器、Core 引擎核心、GDJS 运行时与各类扩展的日常贡献。1. 准备工作Fork 与克隆仓库GDevelop 的源码托管在基于 Git 的代码托管平台上项目当前实际远端为https://gitcode.com/GitHub_Trending/gd/GDevelop.git。如果你还没有自己的副本第一步是点击Fork按钮在平台端创建一份属于你的源码副本。这份副本就是后续提交改动、发起 Pull RequestPR即向官方源码提出改动建议绝大多数用于实现新功能或修复 Bug的载体。随后将你 Fork 得到的仓库克隆到本地git clone gitgithub.com:your-username/GDevelop.git这条命令会把你的副本完整下载到本地计算机。克隆完成后仓库中默认只有一个名为origin的远程仓库remote它指向你自己的副本origin你自己的远程仓库。执行git push或git pull时除非显式指定其他远程代码默认就是与它进行收发。upstreamGDevelop 官方仓库。为了获取上游最新代码你需要手动把它添加为第二个远程。添加upstream远程git remote add upstream https://github.com/4ian/GDevelop.git补充说明对应到当前仓库环境git remote -v显示其origin指向https://gitcode.com/GitHub_Trending/gd/GDevelop.git且本地分支与remotes/origin/master关联——这正是文档所述「origin是你自己的副本」这一约定的直接体现。若你的克隆来源不同只需把上述命令中的 URL 替换为实际仓库地址即可。不想用命令行本指南按命令行编写但整套工作流同样适用于 GitHub Desktop、GitKraken、Tortoise Git、SourceTree 等 GUI 客户端——无论用哪种工具核心工作流不变。2. 理解master分支、特性分支与 Pull RequestGit 将全部代码存放在仓库中改动以commit提交为单位记录。源码的最新版本位于名为master的分支上这是一个约定俗成的命名。当你准备为 GDevelop 添加新内容时应当创建一个新分支。可以把分支想象成树的枝干master是树干承载着成百上千个提交你的分支从master上生长出来在上面追加少量提交你可以发起一个 Pull Request将分支上的改动作为提案提交给官方如果改动被接受它会被合并merge进master。一切结束后你可以丢弃这个分支并回到mastergit checkout master仓库中现存的大量远程分支如3d-preview、AlignmentGrid、add-anchor-behavior-editor-stories等正是这一工作流的现实写照贡献者各自在独立分支上开发功能再通过 PR 汇入主干。3. 提交改动的分步命令3.1 始终从 master 出发每次开始新改动前务必先切回mastergit checkout master创建新分支时git checkout -b branch-name会基于你当前所在的分支来建立新分支。因此绝大多数情况下你应当在master上执行此操作而不是停留在某个已有分支上再开新分支以免把无关改动带入新分支。3.2 从 upstream 拉取最新代码在开始新分支前先同步官方仓库的最新提交# 若尚未添加 upstream 远程先执行 git remote add upstream https://github.com/4ian/GDevelop.git # 确保你在 master 上然后拉取 upstream 的 master 分支 git pull upstream master这句命令的含义是「从 upstream 仓库的 master 分支拉取最新提交」。即使触发了一次合并merge也没有问题。3.3 创建分支、提交并推送从此刻起始终保持「从 master 开分支」的习惯git checkout master # 回到 master确保基准正确 git checkout -b my-new-feature # 基于 master 创建特性分支在分支上做出修改后提交git add # 或 git add -p用命令行精确挑选要暂存stage的改动 git commit # 提交 git push # 将分支推送到你的远程仓库git add -p特别适合把一次实验中的多处改动拆分成逻辑清晰的多个提交这也是 GDevelop 这类大型仓库维护整洁提交历史的常用手段。当你要做一个与当前分支无关的新改动时先回到master再开新分支git checkout master git checkout -b my-new-feature-23.4 用最新 master 更新你的分支如果希望自己的分支随时同步master上的最新改动有两种方式# 1. 先切回 master拉取最新代码 git checkout master git pull upstream master # 2a. 简单方式把 master 合并进你的分支会产生一个合并提交 git checkout my-feature-branch git merge master # 2b. 进阶方式变基rebase获得无合并提交的干净历史 git pull --rebase origin master # 或直接 git pull --rebase upstream master--rebase的做法是先拉取 master 的提交再把你分支上的提交逐个“叠放”到 master 最新提交之上使历史呈线性、更整洁。唯一的“风险”在于冲突处理冲突时用git add标记文件已解决用git rebase --continue完成冲突解决并继续应用下一个提交直到结束如果一切搞砸了想全部取消用git rebase --abort回到变基前状态。4. PR 合并后如何处理你的分支恭喜你的 PR 被合并了 这时请忘记这个分支回到master并拉取最新代码git checkout master git pull upstream master关键背景GDevelop 的合并策略通常不是把你的提交原样合入而是将 PR 的所有提交squash压扁成一个提交以保持提交列表整洁。这意味着你原来的每一个提交并不会被逐一保留不过你仍会被记录为该提交的作者。因此PR 合并后你必须回到 master 并拉取最新提交才能让自己的本地历史与上游对齐。⚠️ 换句话说任务完成后不要停留在你的分支上。请回到master并从 GDevelop 官方仓库获取最新改动。如果想清理无用分支可以删除它git branch -D my-branch务必确认你的提交已经被合并进 GDevelop之后再执行删除——在 PR 被合并之前绝不要删除分支。5. 安全检查点从现有分支复制出“备份分支”最后一个实用技巧如果你不确定接下来要在分支上执行的操作比如一次复杂的 rebase 或 merge会不会出问题先给分支做个副本git checkout my-feature-branch # 先切换到你的特性分支 git checkout -b my-save # 从当前分支创建新分支即得到一份副本 git checkout my-feature-branch # 再切回原分支继续操作之后如果 rebase/merge 出了差错随时可以git checkout my-save找回操作前的完整状态。这个“低成本备份”能极大缓解新手对 Git 危险操作的恐惧。6. 与 GDevelop 开发流程的衔接上述 Git 工作流并非孤立存在它服务于 GDevelop 整体的开发与发布体系本地开发环境按照 newIDE/README.md 的说明克隆仓库后在newIDE/app目录执行npm install与npm start即可启动编辑器开发环境也可以直接运行仓库根目录的 scripts/gitCloneAndBuildGD.bat 一键完成克隆、构建与运行。CI 与持续部署根据 newIDE/docs/Nightly-Builds-and-continuous-deployment.mdGDevelop 使用 CircleCI 与 AppVeyor仓库根目录可见 appveyor.yml对master分支上的每一次提交自动构建新版本。这意味着你推送到分支的代码会在 PR 阶段就接受 CI 校验合入master后则会触发持续的自动化构建。代码风格约束参与贡献前建议阅读 newIDE/docs/Supported-JavaScript-features-and-coding-style.md了解编辑器代码所支持的 JavaScript 特性与编码风格配合 Prettier、ESLint、Flow 等工具让 PR 更容易被维护者接受。7. 总结一张速查表场景命令Fork 后克隆自己的副本git clone gitgithub.com:your-username/GDevelop.git添加上游远程git remote add upstream https://github.com/4ian/GDevelop.git回到 master 并同步上游git checkout master git pull upstream master基于 master 新建特性分支git checkout master git checkout -b my-new-feature暂存并提交改动git add/git add -p然后git commit推送分支git push用 master 更新分支合并git merge master用 master 更新分支变基git pull --rebase upstream master解决冲突git add→git rebase --continue取消则git rebase --abortPR 合并后回 mastergit checkout master git pull upstream master删除已合并的分支git branch -D my-branch确认合并后再删备份当前分支git checkout -b my-save掌握这套工作流后你就能以最小的风险为 GDevelop 的编辑器、游戏引擎核心、运行时或扩展仓库贡献代码Fork → 克隆 → 配置双远程 → 从master开分支 → 提交推送 → 发起 PR → 合入后回到master继续下一个功能。【免费下载链接】GDevelop Open-source, cross-platform 2D/3D/multiplayer game engine designed for everyone.项目地址: https://gitcode.com/GitHub_Trending/gd/GDevelop创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?