[{"data":1,"prerenderedAt":303},["ShallowReactive",2],{"\u002Fcn\u002Fopen_source\u002Fcontribution\u002Fdevelopment_workflow":3,"surround-\u002Fcn\u002Fopen_source\u002Fcontribution\u002Fdevelopment_workflow":289},{"id":4,"title":5,"avatar":6,"banner":6,"body":7,"category":6,"desc":6,"description":13,"extension":283,"links":6,"meta":284,"navigation":6,"path":285,"seo":286,"stem":287,"__hash__":288},"docs\u002Fcn\u002Fopen_source\u002Fcontribution\u002Fdevelopment_workflow.md","开发流程",null,{"type":8,"value":9,"toc":281},"minimark",[10,14,277],[11,12,13],"p",{},"按照以下步骤参与项目开发。",[15,16,18,22,25,100,103,106,123,126,129,144,147,150,163,166,169,196,205,209,212,227,231,234],"steps",{"level":17},"4",[19,20,21],"h4",{"id":21},"与上游仓库同步",[11,23,24],{},"如果你之前 fork 了该仓库，请与上游仓库的变更保持同步：",[26,27,32],"pre",{"className":28,"code":29,"language":30,"meta":31,"style":31},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","git checkout dev        # 切换到 dev 分支\ngit fetch upstream      # 获取上游仓库的最新更改\ngit pull upstream dev   # 将更改合并到本地 dev 分支\ngit push origin dev     # 将合并后的代码推送到你自己的 fork\n","bash","",[33,34,35,55,69,84],"code",{"__ignoreMap":31},[36,37,40,44,48,51],"span",{"class":38,"line":39},"line",1,[36,41,43],{"class":42},"sBMFI","git",[36,45,47],{"class":46},"sfazB"," checkout",[36,49,50],{"class":46}," dev",[36,52,54],{"class":53},"sHwdD","        # 切换到 dev 分支\n",[36,56,58,60,63,66],{"class":38,"line":57},2,[36,59,43],{"class":42},[36,61,62],{"class":46}," fetch",[36,64,65],{"class":46}," upstream",[36,67,68],{"class":53},"      # 获取上游仓库的最新更改\n",[36,70,72,74,77,79,81],{"class":38,"line":71},3,[36,73,43],{"class":42},[36,75,76],{"class":46}," pull",[36,78,65],{"class":46},[36,80,50],{"class":46},[36,82,83],{"class":53},"   # 将更改合并到本地 dev 分支\n",[36,85,87,89,92,95,97],{"class":38,"line":86},4,[36,88,43],{"class":42},[36,90,91],{"class":46}," push",[36,93,94],{"class":46}," origin",[36,96,50],{"class":46},[36,98,99],{"class":53},"     # 将合并后的代码推送到你自己的 fork\n",[19,101,102],{"id":102},"创建功能分支",[11,104,105],{},"为你的新功能或修订创建一个新的分支：",[26,107,109],{"className":28,"code":108,"language":30,"meta":31,"style":31},"git checkout -b feat\u002Fdescriptive-name\n",[33,110,111],{"__ignoreMap":31},[36,112,113,115,117,120],{"class":38,"line":39},[36,114,43],{"class":42},[36,116,47],{"class":46},[36,118,119],{"class":46}," -b",[36,121,122],{"class":46}," feat\u002Fdescriptive-name\n",[19,124,125],{"id":125},"添加你的功能或修订",[11,127,128],{},"在相应文件中实现你的功能、修订或改进。",[130,131,132],"ul",{},[133,134,135,136,139,140,143],"li",{},"例如，你可以在 ",[33,137,138],{},"src\u002Fmemos\u002Fhello_world.py"," 中添加一个函数，并在 ",[33,141,142],{},"tests\u002Ftest_hello_world.py"," 中编写相应的测试用例。",[19,145,146],{"id":146},"测试你的更改",[11,148,149],{},"运行测试套件以确保更改正确：",[26,151,153],{"className":28,"code":152,"language":30,"meta":31,"style":31},"make test\n",[33,154,155],{"__ignoreMap":31},[36,156,157,160],{"class":38,"line":39},[36,158,159],{"class":42},"make",[36,161,162],{"class":46}," test\n",[19,164,165],{"id":165},"提交更改",[11,167,168],{},"在提交前或 PR 前，rebase 到最新 upstream\u002Fdev：",[26,170,172],{"className":28,"code":171,"language":30,"meta":31,"style":31},"git fetch upstream\ngit rebase upstream\u002Fdev      # 把你的 feat 分支基于最新 dev 重放\n",[33,173,174,183],{"__ignoreMap":31},[36,175,176,178,180],{"class":38,"line":39},[36,177,43],{"class":42},[36,179,62],{"class":46},[36,181,182],{"class":46}," upstream\n",[36,184,185,187,190,193],{"class":38,"line":57},[36,186,43],{"class":42},[36,188,189],{"class":46}," rebase",[36,191,192],{"class":46}," upstream\u002Fdev",[36,194,195],{"class":53},"      # 把你的 feat 分支基于最新 dev 重放\n",[11,197,198,199,204],{},"提交更改时请遵循项目的提交规范（参见 ",[200,201,203],"a",{"href":202},"commit_guidelines","提交规范","）。",[19,206,208],{"id":207},"推送到你的-fork-仓库","推送到你的 Fork 仓库",[11,210,211],{},"将功能分支推送到你 fork 的远程仓库：",[26,213,215],{"className":28,"code":214,"language":30,"meta":31,"style":31},"git push origin feat\u002Fdescriptive-name\n",[33,216,217],{"__ignoreMap":31},[36,218,219,221,223,225],{"class":38,"line":39},[36,220,43],{"class":42},[36,222,91],{"class":46},[36,224,94],{"class":46},[36,226,122],{"class":46},[19,228,230],{"id":229},"创建-pull-request","创建 Pull Request",[11,232,233],{},"提交你的更改以供审核：",[130,235,236,259,262,265,268,274],{},[133,237,238,242,243],{},[239,240,241],"strong",{},"重要提示："," 请务必将 Pull Request 提交到：",[130,244,245,252],{},[133,246,247,248,251],{},"✅ 上游仓库的 ",[33,249,250],{},"dev"," 分支，",[133,253,254,255,258],{},"❎ 而不是上游仓库的 ",[33,256,257],{},"main"," 分支。",[133,260,261],{},"打开 GitHub 上的原始仓库",[133,263,264],{},"点击 \"Pull Requests\"",[133,266,267],{},"点击 \"New Pull Request\"",[133,269,270,271,273],{},"选择 ",[33,272,250],{}," 作为目标分支，你的分支作为对比分支",[133,275,276],{},"仔细填写 PR 描述",[278,279,280],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":31,"searchDepth":57,"depth":57,"links":282},[],"md",{},"\u002Fcn\u002Fopen_source\u002Fcontribution\u002Fdevelopment_workflow",{"title":5,"description":13},"cn\u002Fopen_source\u002Fcontribution\u002Fdevelopment_workflow","R4DScYWCXHybcGW2MnUxi6YX-PQCVBjE4b_6XAHQIzM",[290,298],{"title":291,"path":292,"stem":293,"icon":294,"framework":6,"module":6,"class":295,"target":-1,"active":296,"defaultOpen":296,"children":-1,"description":297},"配置开发环境","\u002Fcn\u002Fopen_source\u002Fcontribution\u002Fsetting_up","open_source\u002Fcontribution\u002Fsetting_up","i-ri-tools-line",[],false,"若要参与 MemOS 的开发，你需要在本地配置开发环境。",{"title":203,"path":299,"stem":300,"icon":301,"framework":6,"module":6,"class":302,"target":-1,"active":296,"defaultOpen":296,"children":-1,"description":-1},"\u002Fcn\u002Fopen_source\u002Fcontribution\u002Fcommit_guidelines","open_source\u002Fcontribution\u002Fcommit_guidelines","i-ri-git-commit-line",[],1774339754173]