[{"data":1,"prerenderedAt":1581},["ShallowReactive",2],{"navigation_docs":3,"-guides-notes-git-expand":168,"-guides-notes-git-expand-surround":1578},[4,46,75],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":45},"Bookmarks","i-lucide:bookmark","\u002Fbookmarks","10.bookmarks",[10,15,20,25,30,35,40],{"title":11,"path":12,"stem":13,"icon":14},"工具","\u002Fbookmarks\u002Ftools","10.bookmarks\u002F10.tools","i-lucide:wrench",{"title":16,"path":17,"stem":18,"icon":19},"开发","\u002Fbookmarks\u002Fdev","10.bookmarks\u002F20.dev","i-lucide:code-xml",{"title":21,"path":22,"stem":23,"icon":24},"学习","\u002Fbookmarks\u002Flearn","10.bookmarks\u002F30.learn","i-lucide:graduation-cap",{"title":26,"path":27,"stem":28,"icon":29},"视觉素材","\u002Fbookmarks\u002Fmedia","10.bookmarks\u002F40.media","i-lucide:image",{"title":31,"path":32,"stem":33,"icon":34},"AI","\u002Fbookmarks\u002Fai","10.bookmarks\u002F50.ai","i-lucide:sparkles",{"title":36,"path":37,"stem":38,"icon":39},"设计","\u002Fbookmarks\u002Fdesign","10.bookmarks\u002F60.design","i-lucide:palette",{"title":41,"path":42,"stem":43,"icon":44},"其它","\u002Fbookmarks\u002Fmore","10.bookmarks\u002F70.more","i-lucide:ellipsis",false,{"title":31,"icon":34,"path":47,"stem":48,"children":49,"page":45},"\u002Fai","20.ai",[50,55,60,65,70],{"title":51,"path":52,"stem":53,"icon":54},"Agent 工具","\u002Fai\u002Fagent-tools","20.ai\u002F10.agent-tools","i-lucide:puzzle",{"title":56,"path":57,"stem":58,"icon":59},"OmniRoute 使用","\u002Fai\u002Fomniroute-setup","20.ai\u002F20.omniroute-setup","i-lucide:route",{"title":61,"path":62,"stem":63,"icon":64},"RTK 使用","\u002Fai\u002Frtk-setup","20.ai\u002F30.rtk-setup","i-lucide:scissors",{"title":66,"path":67,"stem":68,"icon":69},"Headroom 使用","\u002Fai\u002Fheadroom-setup","20.ai\u002F40.headroom-setup","i-lucide:minimize-2",{"title":71,"path":72,"stem":73,"icon":74},"Serena 使用","\u002Fai\u002Fserena-setup","20.ai\u002F50.serena-setup","i-lucide:scan-search",{"title":76,"icon":77,"path":78,"stem":79,"children":80,"page":45},"Guides","i-lucide:book-open","\u002Fguides","30.guides",[81,133,154],{"title":82,"icon":83,"path":84,"stem":85,"children":86,"page":45},"Notes","i-lucide:notebook-text","\u002Fguides\u002Fnotes","30.guides\u002F10.notes",[87,91,96,100,105,109,113,118,123,128],{"title":88,"path":89,"stem":90,"icon":19},"开发问题记录","\u002Fguides\u002Fnotes\u002Fdev-qa","30.guides\u002F10.notes\u002F10.dev-qa",{"title":92,"path":93,"stem":94,"icon":95},"js 常用整理","\u002Fguides\u002Fnotes\u002Fjs-tidy","30.guides\u002F10.notes\u002F20.js-tidy","i-lucide:braces",{"title":97,"path":98,"stem":99,"icon":95},"js 小技巧","\u002Fguides\u002Fnotes\u002Fjs-tips","30.guides\u002F10.notes\u002F30.js-tips",{"title":101,"path":102,"stem":103,"icon":104},"git 问题记录","\u002Fguides\u002Fnotes\u002Fgit-qa","30.guides\u002F10.notes\u002F40.git-qa","i-lucide:git-branch",{"title":106,"path":107,"stem":108,"icon":104},"git 扩展命令","\u002Fguides\u002Fnotes\u002Fgit-expand","30.guides\u002F10.notes\u002F50.git-expand",{"title":110,"path":111,"stem":112,"icon":104},"git 命令速查表","\u002Fguides\u002Fnotes\u002Fgit-cheatsheet","30.guides\u002F10.notes\u002F60.git-cheatsheet",{"title":114,"path":115,"stem":116,"icon":117},"bash 命令速查表","\u002Fguides\u002Fnotes\u002Fbash-cheatsheet","30.guides\u002F10.notes\u002F70.bash-cheatsheet","i-lucide:square-terminal",{"title":119,"path":120,"stem":121,"icon":122},"linux 命令速查表","\u002Fguides\u002Fnotes\u002Flinux-cheatsheet","30.guides\u002F10.notes\u002F80.linux-cheatsheet","i-lucide:server",{"title":124,"path":125,"stem":126,"icon":127},"Docker 使用","\u002Fguides\u002Fnotes\u002Fdocker-setup","30.guides\u002F10.notes\u002F90.docker-setup","i-lucide:container",{"title":129,"path":130,"stem":131,"icon":132},"常用工具命令","\u002Fguides\u002Fnotes\u002Fcommon-tool-commands","30.guides\u002F10.notes\u002F95.common-tool-commands","i-lucide:toolbox",{"title":134,"icon":135,"path":136,"stem":137,"children":138,"page":45},"System","i-lucide:monitor","\u002Fguides\u002Fsystem","30.guides\u002F20.system",[139,144,149],{"title":140,"path":141,"stem":142,"icon":143},"系统常用软件","\u002Fguides\u002Fsystem\u002Fsystem-software","30.guides\u002F20.system\u002F10.system-software","i-lucide:package",{"title":145,"path":146,"stem":147,"icon":148},"开发工具命令","\u002Fguides\u002Fsystem\u002Fdev-tools-commands","30.guides\u002F20.system\u002F20.dev-tools-commands","i-lucide:terminal",{"title":150,"path":151,"stem":152,"icon":153},"macOS 使用记录","\u002Fguides\u002Fsystem\u002Fmacos-usage-record","30.guides\u002F20.system\u002F30.macos-usage-record","i-simple-icons:apple",{"title":155,"icon":54,"path":156,"stem":157,"children":158,"page":45},"Other","\u002Fguides\u002Fother","30.guides\u002F30.other",[159,164],{"title":160,"path":161,"stem":162,"icon":163},"汉语拼音和小鹤双拼","\u002Fguides\u002Fother\u002Fflypy-pinyin","30.guides\u002F30.other\u002F10.flypy-pinyin","i-lucide:notebook-pen",{"title":165,"path":166,"stem":167,"icon":143},"魔方公式","\u002Fguides\u002Fother\u002Frubik-cube-formula","30.guides\u002F30.other\u002F20.rubik-cube-formula",{"id":169,"title":106,"body":170,"description":340,"extension":1572,"links":1573,"meta":1574,"navigation":1575,"path":107,"seo":1576,"stem":108,"__hash__":1577},"docs\u002F30.guides\u002F10.notes\u002F50.git-expand.md",{"type":171,"value":172,"toc":1564},"minimark",[173,178,195,200,290,298,302,323,327,376,598,612,616,626,1560],[174,175,177],"h2",{"id":176},"git-lfs-大文件存储","Git LFS 大文件存储",[179,180,186,191],"div",{"className":181},[182,183,184,185],"grid","gap-4","sm:grid-cols-2","[&>*]:my-0!",[187,188,190],"tip",{"to":189},"https:\u002F\u002Fgit-lfs.com\u002F","Git Large File storage",[187,192,194],{"to":193},"https:\u002F\u002Fdocs.github.com\u002Fzh\u002Frepositories\u002Fworking-with-files\u002Fmanaging-large-files\u002Fabout-large-files-on-github","GitHub 管理大型文件",[196,197,199],"h3",{"id":198},"git-lfs-原理","Git LFS 原理",[201,202,203,227],"ul",{},[204,205,206,210,211,214,215,218,219,222,223,226],"li",{},[207,208,209],"code",{},"Git LFS"," 通过懒惰地 (",[207,212,213],{},"lazily",") 下载大文件的相关版本来减少大文件在仓库中的影响。具体来说，大文件是在 ",[207,216,217],{},"checkout"," 的过程中下载的，而不是 ",[207,220,221],{},"clone"," 或 ",[207,224,225],{},"fetch"," 过程中下载的。",[204,228,229,231,232,234,235],{},[207,230,209],{}," 通过将仓库中的大文件替换为小于 1 KB 的指针文件来做到这一点。在正常使用期间，我们不会看到这些指针文件，因为它们是由 ",[207,233,209],{}," 自动处理的:\n",[201,236,237,254,268],{},[204,238,239,240,243,244,246,247,253],{},"当我们执行 ",[207,241,242],{},"git add"," 命令时, ",[207,245,209],{}," 用一个指针替换实际内容,并将实际内容存储在本地 LFS 缓存中 (本地缓存位于仓库的 ",[248,249,250],"em",{},[207,251,252],{},".git\u002Flfs\u002Fobjects"," 路径下）。",[204,255,256,259,260,263,264,267],{},[207,257,258],{},"git push"," 时新增的 ",[207,261,262],{},"commit"," 所引用的所有 ",[207,265,266],{},"大文件"," 都会从本地传输到远程仓库的远程存储。",[204,269,270,271,273,274,276,277,280,281,283,284,286,287,289],{},"当我们 ",[207,272,217],{}," 一个包含 ",[207,275,209],{}," 指针的 commit 时 (",[207,278,279],{},"pull"," 包含了 ",[207,282,217],{}," 命令)，指针文件将替换为本地 ",[207,285,209],{}," 缓存中的文件，或者从远端 ",[207,288,209],{}," 存储区下载。",[291,292,293],"p",{},[294,295],"img",{"alt":296,"src":297},"git-lfs-graphic.gif","\u002Fdocumentation\u002Fgit-lfs-graphic.gif",[196,299,301],{"id":300},"git-lfs-好处","Git LFS 好处",[201,303,304,307,310,320],{},[204,305,306],{},"对于日常使用 Git 的习惯不造成影响。",[204,308,309],{},"减小本地 Git 缓存所占用的存储空间。",[204,311,312,313,222,316,319],{},"加快 ",[207,314,315],{},"git fetch",[207,317,318],{},"git pull"," 的速度。",[204,321,322],{},"加快在 commit 之间切换的速度。",[196,324,326],{"id":325},"git-lfs-使用方式","Git LFS 使用方式",[328,329,330,359],"tabs",{},[331,332,334],"tabs-item",{"label":333},"Windows",[335,336,341],"pre",{"className":337,"code":338,"language":339,"meta":340,"style":340},"language-sh shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","scoop install git-lfs\n","sh","",[207,342,343],{"__ignoreMap":340},[344,345,348,352,356],"span",{"class":346,"line":347},"line",1,[344,349,351],{"class":350},"sBMFI","scoop",[344,353,355],{"class":354},"sfazB"," install",[344,357,358],{"class":354}," git-lfs\n",[331,360,362],{"label":361},"MacOS",[335,363,365],{"className":337,"code":364,"language":339,"meta":340,"style":340},"brew install git-lfs\n",[207,366,367],{"__ignoreMap":340},[344,368,369,372,374],{"class":346,"line":347},[344,370,371],{"class":350},"brew",[344,373,355],{"class":354},[344,375,358],{"class":354},[335,377,379],{"className":337,"code":378,"language":339,"meta":340,"style":340},"# 检查\n$ git lfs --version\n\n# 初始化工程，开启\n$ git lfs install\n$ git lfs install --local\n\n# 将 .png 文件格式设置为被 Git LFS 管理的格式\n# 或者直接编辑 .gitattributes\n$ git lfs track \"*.png\"\n# 添加所有需要追踪的文件类型（一次性添加多个扩展名）\n$ git lfs track \"**\u002F*.{psd,ai,tiff,raw,sketch,mp4,mp3,zip,rar,sql,pdf}\"\n\n# 确认追踪规则\n$ git lfs track\n\n# 查看当前 commit 有哪些文件被认为是 LFS 文件\n$ git lfs ls-files\n\n# 剪除存放于本地的 LFS 文件中那些旧版本的版本, 释放一些硬盘存储空间\n$ git lfs prune\n\n# 关闭\n$ git lfs uninstall --local\n",[207,380,381,387,402,409,415,427,441,446,452,458,480,486,504,509,515,527,532,538,550,555,561,573,578,584],{"__ignoreMap":340},[344,382,383],{"class":346,"line":347},[344,384,386],{"class":385},"sHwdD","# 检查\n",[344,388,390,393,396,399],{"class":346,"line":389},2,[344,391,392],{"class":350},"$",[344,394,395],{"class":354}," git",[344,397,398],{"class":354}," lfs",[344,400,401],{"class":354}," --version\n",[344,403,405],{"class":346,"line":404},3,[344,406,408],{"emptyLinePlaceholder":407},true,"\n",[344,410,412],{"class":346,"line":411},4,[344,413,414],{"class":385},"# 初始化工程，开启\n",[344,416,418,420,422,424],{"class":346,"line":417},5,[344,419,392],{"class":350},[344,421,395],{"class":354},[344,423,398],{"class":354},[344,425,426],{"class":354}," install\n",[344,428,430,432,434,436,438],{"class":346,"line":429},6,[344,431,392],{"class":350},[344,433,395],{"class":354},[344,435,398],{"class":354},[344,437,355],{"class":354},[344,439,440],{"class":354}," --local\n",[344,442,444],{"class":346,"line":443},7,[344,445,408],{"emptyLinePlaceholder":407},[344,447,449],{"class":346,"line":448},8,[344,450,451],{"class":385},"# 将 .png 文件格式设置为被 Git LFS 管理的格式\n",[344,453,455],{"class":346,"line":454},9,[344,456,457],{"class":385},"# 或者直接编辑 .gitattributes\n",[344,459,461,463,465,467,470,474,477],{"class":346,"line":460},10,[344,462,392],{"class":350},[344,464,395],{"class":354},[344,466,398],{"class":354},[344,468,469],{"class":354}," track",[344,471,473],{"class":472},"sMK4o"," \"",[344,475,476],{"class":354},"*.png",[344,478,479],{"class":472},"\"\n",[344,481,483],{"class":346,"line":482},11,[344,484,485],{"class":385},"# 添加所有需要追踪的文件类型（一次性添加多个扩展名）\n",[344,487,489,491,493,495,497,499,502],{"class":346,"line":488},12,[344,490,392],{"class":350},[344,492,395],{"class":354},[344,494,398],{"class":354},[344,496,469],{"class":354},[344,498,473],{"class":472},[344,500,501],{"class":354},"**\u002F*.{psd,ai,tiff,raw,sketch,mp4,mp3,zip,rar,sql,pdf}",[344,503,479],{"class":472},[344,505,507],{"class":346,"line":506},13,[344,508,408],{"emptyLinePlaceholder":407},[344,510,512],{"class":346,"line":511},14,[344,513,514],{"class":385},"# 确认追踪规则\n",[344,516,518,520,522,524],{"class":346,"line":517},15,[344,519,392],{"class":350},[344,521,395],{"class":354},[344,523,398],{"class":354},[344,525,526],{"class":354}," track\n",[344,528,530],{"class":346,"line":529},16,[344,531,408],{"emptyLinePlaceholder":407},[344,533,535],{"class":346,"line":534},17,[344,536,537],{"class":385},"# 查看当前 commit 有哪些文件被认为是 LFS 文件\n",[344,539,541,543,545,547],{"class":346,"line":540},18,[344,542,392],{"class":350},[344,544,395],{"class":354},[344,546,398],{"class":354},[344,548,549],{"class":354}," ls-files\n",[344,551,553],{"class":346,"line":552},19,[344,554,408],{"emptyLinePlaceholder":407},[344,556,558],{"class":346,"line":557},20,[344,559,560],{"class":385},"# 剪除存放于本地的 LFS 文件中那些旧版本的版本, 释放一些硬盘存储空间\n",[344,562,564,566,568,570],{"class":346,"line":563},21,[344,565,392],{"class":350},[344,567,395],{"class":354},[344,569,398],{"class":354},[344,571,572],{"class":354}," prune\n",[344,574,576],{"class":346,"line":575},22,[344,577,408],{"emptyLinePlaceholder":407},[344,579,581],{"class":346,"line":580},23,[344,582,583],{"class":385},"# 关闭\n",[344,585,587,589,591,593,596],{"class":346,"line":586},24,[344,588,392],{"class":350},[344,590,395],{"class":354},[344,592,398],{"class":354},[344,594,595],{"class":354}," uninstall",[344,597,440],{"class":354},[599,600,601],"blockquote",{},[291,602,603,604],{},"参考资料：",[605,606,177],"a",{"href":607,"rel":608,"target":611},"https:\u002F\u002Fblog.yusong.me\u002Fgit\u002Flfs",[609,610],"noopener","noreferrer","_blank",[174,613,615],{"id":614},"git-extras-常用命令","git-extras 常用命令",[599,617,618],{},[291,619,620,625],{},[605,621,624],{"href":622,"rel":623,"target":611},"https:\u002F\u002Fgithub.com\u002Ftj\u002Fgit-extras\u002Fblob\u002Fmain\u002FCommands.md",[609,610],"git-extras"," 是一组有用的 Git 扩展命令，旨在简化常见的 Git 工作流程和任务。",[328,627,628,1166],{},[331,629,631],{"label":630},"方式 1",[335,632,634],{"className":337,"code":633,"language":339,"meta":340,"style":340},"# --- 工具版本与帮助 ---\n$ git extras --version    # 查看 git-extras 版本号（缩写：-v）\n$ git extras --help       # 查看 git-extras 帮助文档（缩写：-h）\n\n# --- 仓库基础与信息查询 ---\n$ git info                # 显示当前仓库详细信息（作者、提交数、分支、最后提交等）\n$ git root                # 输出当前 Git 仓库的根目录绝对路径\n$ git summary             # 输出当前仓库的摘要信息（提交总数、作者排名、活跃天数等）\n$ git count               # 统计提交次数\n$ git line-summary        # 按作者汇总代码行数的增加与减少量\n$ git effort              # 统计每个文件的提交次数与活跃度（柱状图展示）\n$ git churn               # 统计文件修改频率\n\n# --- 快捷网页跳转 ---\n$ git browse              # 浏览器中打开当前项目的远程仓库页面\n$ git browse-ci           # 浏览器中打开当前项目的 CI 页面\n\n# --- 分支与合并增强 ---\n$ git bclean              # 删除已合并到当前分支的其他本地分支\n$ git bulk                # 在多个 Git 仓库中批量执行指定命令\n$ git delta               # 列出当前分支与指定分支之间有差异的文件列表\n$ git merge-into          # 将 A 分支合并到 B 分支（无需切换到 B 分支）\n$ git merge-repo          # 将外部 Git 仓库合并到当前仓库的指定目录并保留历史\n$ git pull-request        # 创建 GitHub\u002FGitLab 的 Pull Request\n\n# --- 日志、历史与站会 ---\n$ git changelog           # 依据提交历史生成或更新 CHANGELOG.md\n$ git commits-since       # 查看指定时间点以来的所有提交记录\n$ git graft               # 合并指定分支到当前分支并删除原分支\n$ git standup             # 展示指定作者最近的提交记录\n\n# --- 提交控制与进度管理 ---\n$ git undo                # 撤销最后一次提交，保留修改至暂存区（同 git reset --soft HEAD~1）\n$ git wip                 # 创建临时提交以保存当前未完成的工作进度\n$ git unwip               # 撤销 wip 临时提交并恢复工作区\n$ git bug                 # 创建 bug 修复分支，修复完成后自动合并并删除该分支\n\n# --- 代码清理与安全删除 ---\n$ git clear               # 强制清理所有未追踪的文件和目录（比 git clean -fd 更彻底） # [注意] 无法恢复\n$ git fresh               # 强制拉取远程最新代码并丢弃本地所有未提交修改 # [注意] 覆盖本地，慎用\n$ git obliterate          # 从所有历史提交中彻底删除指定文件 # [注意] 涉及历史重写，需强推远程\n\n# --- 文件锁定与防误触 ---\n$ git locked              # 列出被锁定的文件（assume-unchanged 标记）\n$ git lock                # 锁定指定文件，使其不参与版本追踪与提交\n$ git unlock              # 解锁指定文件\n\n# --- 仓库初始化与发布 ---\n$ git setup               # 初始化本地 Git 仓库并交互式配置远程仓库\n$ git release             # 自动执行发布流程：打 Tag、推送到远程、生成 Release\n$ git ignore              # 将指定规则或文件追加至 .gitignore 文件\n$ git alias               # 配置和查看 Git 别名\n",[207,635,636,641,656,670,674,679,691,703,715,727,739,751,763,767,772,784,796,800,805,817,829,841,853,865,877,882,888,901,914,927,940,945,951,964,977,990,1003,1008,1014,1027,1040,1053,1058,1064,1077,1090,1103,1108,1114,1127,1140,1153],{"__ignoreMap":340},[344,637,638],{"class":346,"line":347},[344,639,640],{"class":385},"# --- 工具版本与帮助 ---\n",[344,642,643,645,647,650,653],{"class":346,"line":389},[344,644,392],{"class":350},[344,646,395],{"class":354},[344,648,649],{"class":354}," extras",[344,651,652],{"class":354}," --version",[344,654,655],{"class":385},"    # 查看 git-extras 版本号（缩写：-v）\n",[344,657,658,660,662,664,667],{"class":346,"line":404},[344,659,392],{"class":350},[344,661,395],{"class":354},[344,663,649],{"class":354},[344,665,666],{"class":354}," --help",[344,668,669],{"class":385},"       # 查看 git-extras 帮助文档（缩写：-h）\n",[344,671,672],{"class":346,"line":411},[344,673,408],{"emptyLinePlaceholder":407},[344,675,676],{"class":346,"line":417},[344,677,678],{"class":385},"# --- 仓库基础与信息查询 ---\n",[344,680,681,683,685,688],{"class":346,"line":429},[344,682,392],{"class":350},[344,684,395],{"class":354},[344,686,687],{"class":354}," info",[344,689,690],{"class":385},"                # 显示当前仓库详细信息（作者、提交数、分支、最后提交等）\n",[344,692,693,695,697,700],{"class":346,"line":443},[344,694,392],{"class":350},[344,696,395],{"class":354},[344,698,699],{"class":354}," root",[344,701,702],{"class":385},"                # 输出当前 Git 仓库的根目录绝对路径\n",[344,704,705,707,709,712],{"class":346,"line":448},[344,706,392],{"class":350},[344,708,395],{"class":354},[344,710,711],{"class":354}," summary",[344,713,714],{"class":385},"             # 输出当前仓库的摘要信息（提交总数、作者排名、活跃天数等）\n",[344,716,717,719,721,724],{"class":346,"line":454},[344,718,392],{"class":350},[344,720,395],{"class":354},[344,722,723],{"class":354}," count",[344,725,726],{"class":385},"               # 统计提交次数\n",[344,728,729,731,733,736],{"class":346,"line":460},[344,730,392],{"class":350},[344,732,395],{"class":354},[344,734,735],{"class":354}," line-summary",[344,737,738],{"class":385},"        # 按作者汇总代码行数的增加与减少量\n",[344,740,741,743,745,748],{"class":346,"line":482},[344,742,392],{"class":350},[344,744,395],{"class":354},[344,746,747],{"class":354}," effort",[344,749,750],{"class":385},"              # 统计每个文件的提交次数与活跃度（柱状图展示）\n",[344,752,753,755,757,760],{"class":346,"line":488},[344,754,392],{"class":350},[344,756,395],{"class":354},[344,758,759],{"class":354}," churn",[344,761,762],{"class":385},"               # 统计文件修改频率\n",[344,764,765],{"class":346,"line":506},[344,766,408],{"emptyLinePlaceholder":407},[344,768,769],{"class":346,"line":511},[344,770,771],{"class":385},"# --- 快捷网页跳转 ---\n",[344,773,774,776,778,781],{"class":346,"line":517},[344,775,392],{"class":350},[344,777,395],{"class":354},[344,779,780],{"class":354}," browse",[344,782,783],{"class":385},"              # 浏览器中打开当前项目的远程仓库页面\n",[344,785,786,788,790,793],{"class":346,"line":529},[344,787,392],{"class":350},[344,789,395],{"class":354},[344,791,792],{"class":354}," browse-ci",[344,794,795],{"class":385},"           # 浏览器中打开当前项目的 CI 页面\n",[344,797,798],{"class":346,"line":534},[344,799,408],{"emptyLinePlaceholder":407},[344,801,802],{"class":346,"line":540},[344,803,804],{"class":385},"# --- 分支与合并增强 ---\n",[344,806,807,809,811,814],{"class":346,"line":552},[344,808,392],{"class":350},[344,810,395],{"class":354},[344,812,813],{"class":354}," bclean",[344,815,816],{"class":385},"              # 删除已合并到当前分支的其他本地分支\n",[344,818,819,821,823,826],{"class":346,"line":557},[344,820,392],{"class":350},[344,822,395],{"class":354},[344,824,825],{"class":354}," bulk",[344,827,828],{"class":385},"                # 在多个 Git 仓库中批量执行指定命令\n",[344,830,831,833,835,838],{"class":346,"line":563},[344,832,392],{"class":350},[344,834,395],{"class":354},[344,836,837],{"class":354}," delta",[344,839,840],{"class":385},"               # 列出当前分支与指定分支之间有差异的文件列表\n",[344,842,843,845,847,850],{"class":346,"line":575},[344,844,392],{"class":350},[344,846,395],{"class":354},[344,848,849],{"class":354}," merge-into",[344,851,852],{"class":385},"          # 将 A 分支合并到 B 分支（无需切换到 B 分支）\n",[344,854,855,857,859,862],{"class":346,"line":580},[344,856,392],{"class":350},[344,858,395],{"class":354},[344,860,861],{"class":354}," merge-repo",[344,863,864],{"class":385},"          # 将外部 Git 仓库合并到当前仓库的指定目录并保留历史\n",[344,866,867,869,871,874],{"class":346,"line":586},[344,868,392],{"class":350},[344,870,395],{"class":354},[344,872,873],{"class":354}," pull-request",[344,875,876],{"class":385},"        # 创建 GitHub\u002FGitLab 的 Pull Request\n",[344,878,880],{"class":346,"line":879},25,[344,881,408],{"emptyLinePlaceholder":407},[344,883,885],{"class":346,"line":884},26,[344,886,887],{"class":385},"# --- 日志、历史与站会 ---\n",[344,889,891,893,895,898],{"class":346,"line":890},27,[344,892,392],{"class":350},[344,894,395],{"class":354},[344,896,897],{"class":354}," changelog",[344,899,900],{"class":385},"           # 依据提交历史生成或更新 CHANGELOG.md\n",[344,902,904,906,908,911],{"class":346,"line":903},28,[344,905,392],{"class":350},[344,907,395],{"class":354},[344,909,910],{"class":354}," commits-since",[344,912,913],{"class":385},"       # 查看指定时间点以来的所有提交记录\n",[344,915,917,919,921,924],{"class":346,"line":916},29,[344,918,392],{"class":350},[344,920,395],{"class":354},[344,922,923],{"class":354}," graft",[344,925,926],{"class":385},"               # 合并指定分支到当前分支并删除原分支\n",[344,928,930,932,934,937],{"class":346,"line":929},30,[344,931,392],{"class":350},[344,933,395],{"class":354},[344,935,936],{"class":354}," standup",[344,938,939],{"class":385},"             # 展示指定作者最近的提交记录\n",[344,941,943],{"class":346,"line":942},31,[344,944,408],{"emptyLinePlaceholder":407},[344,946,948],{"class":346,"line":947},32,[344,949,950],{"class":385},"# --- 提交控制与进度管理 ---\n",[344,952,954,956,958,961],{"class":346,"line":953},33,[344,955,392],{"class":350},[344,957,395],{"class":354},[344,959,960],{"class":354}," undo",[344,962,963],{"class":385},"                # 撤销最后一次提交，保留修改至暂存区（同 git reset --soft HEAD~1）\n",[344,965,967,969,971,974],{"class":346,"line":966},34,[344,968,392],{"class":350},[344,970,395],{"class":354},[344,972,973],{"class":354}," wip",[344,975,976],{"class":385},"                 # 创建临时提交以保存当前未完成的工作进度\n",[344,978,980,982,984,987],{"class":346,"line":979},35,[344,981,392],{"class":350},[344,983,395],{"class":354},[344,985,986],{"class":354}," unwip",[344,988,989],{"class":385},"               # 撤销 wip 临时提交并恢复工作区\n",[344,991,993,995,997,1000],{"class":346,"line":992},36,[344,994,392],{"class":350},[344,996,395],{"class":354},[344,998,999],{"class":354}," bug",[344,1001,1002],{"class":385},"                 # 创建 bug 修复分支，修复完成后自动合并并删除该分支\n",[344,1004,1006],{"class":346,"line":1005},37,[344,1007,408],{"emptyLinePlaceholder":407},[344,1009,1011],{"class":346,"line":1010},38,[344,1012,1013],{"class":385},"# --- 代码清理与安全删除 ---\n",[344,1015,1017,1019,1021,1024],{"class":346,"line":1016},39,[344,1018,392],{"class":350},[344,1020,395],{"class":354},[344,1022,1023],{"class":354}," clear",[344,1025,1026],{"class":385},"               # 强制清理所有未追踪的文件和目录（比 git clean -fd 更彻底） # [注意] 无法恢复\n",[344,1028,1030,1032,1034,1037],{"class":346,"line":1029},40,[344,1031,392],{"class":350},[344,1033,395],{"class":354},[344,1035,1036],{"class":354}," fresh",[344,1038,1039],{"class":385},"               # 强制拉取远程最新代码并丢弃本地所有未提交修改 # [注意] 覆盖本地，慎用\n",[344,1041,1043,1045,1047,1050],{"class":346,"line":1042},41,[344,1044,392],{"class":350},[344,1046,395],{"class":354},[344,1048,1049],{"class":354}," obliterate",[344,1051,1052],{"class":385},"          # 从所有历史提交中彻底删除指定文件 # [注意] 涉及历史重写，需强推远程\n",[344,1054,1056],{"class":346,"line":1055},42,[344,1057,408],{"emptyLinePlaceholder":407},[344,1059,1061],{"class":346,"line":1060},43,[344,1062,1063],{"class":385},"# --- 文件锁定与防误触 ---\n",[344,1065,1067,1069,1071,1074],{"class":346,"line":1066},44,[344,1068,392],{"class":350},[344,1070,395],{"class":354},[344,1072,1073],{"class":354}," locked",[344,1075,1076],{"class":385},"              # 列出被锁定的文件（assume-unchanged 标记）\n",[344,1078,1080,1082,1084,1087],{"class":346,"line":1079},45,[344,1081,392],{"class":350},[344,1083,395],{"class":354},[344,1085,1086],{"class":354}," lock",[344,1088,1089],{"class":385},"                # 锁定指定文件，使其不参与版本追踪与提交\n",[344,1091,1093,1095,1097,1100],{"class":346,"line":1092},46,[344,1094,392],{"class":350},[344,1096,395],{"class":354},[344,1098,1099],{"class":354}," unlock",[344,1101,1102],{"class":385},"              # 解锁指定文件\n",[344,1104,1106],{"class":346,"line":1105},47,[344,1107,408],{"emptyLinePlaceholder":407},[344,1109,1111],{"class":346,"line":1110},48,[344,1112,1113],{"class":385},"# --- 仓库初始化与发布 ---\n",[344,1115,1117,1119,1121,1124],{"class":346,"line":1116},49,[344,1118,392],{"class":350},[344,1120,395],{"class":354},[344,1122,1123],{"class":354}," setup",[344,1125,1126],{"class":385},"               # 初始化本地 Git 仓库并交互式配置远程仓库\n",[344,1128,1130,1132,1134,1137],{"class":346,"line":1129},50,[344,1131,392],{"class":350},[344,1133,395],{"class":354},[344,1135,1136],{"class":354}," release",[344,1138,1139],{"class":385},"             # 自动执行发布流程：打 Tag、推送到远程、生成 Release\n",[344,1141,1143,1145,1147,1150],{"class":346,"line":1142},51,[344,1144,392],{"class":350},[344,1146,395],{"class":354},[344,1148,1149],{"class":354}," ignore",[344,1151,1152],{"class":385},"              # 将指定规则或文件追加至 .gitignore 文件\n",[344,1154,1156,1158,1160,1163],{"class":346,"line":1155},52,[344,1157,392],{"class":350},[344,1159,395],{"class":354},[344,1161,1162],{"class":354}," alias",[344,1164,1165],{"class":385},"               # 配置和查看 Git 别名\n",[331,1167,1169],{"label":1168},"方式 2",[335,1170,1172],{"className":337,"code":1171,"language":339,"meta":340,"style":340},"# --- 工具版本与帮助 ---\n$ git-extras --version    # 查看 git-extras 版本号（缩写：-v）\n$ git-extras --help       # 查看 git-extras 帮助文档（缩写：-h）\n\n# --- 仓库基础与信息查询 ---\n$ git-info                # 显示当前仓库详细信息（作者、提交数、分支、最后提交等）\n$ git-root                # 输出当前 Git 仓库的根目录绝对路径\n$ git-summary             # 输出当前仓库的摘要信息（提交总数、作者排名、活跃天数等）\n$ git-count               # 统计提交次数\n$ git-line-summary        # 按作者汇总代码行数的增加与减少量\n$ git-effort              # 统计每个文件的提交次数与活跃度（柱状图展示）\n$ git-churn               # 统计文件修改频率\n\n# --- 快捷网页跳转 ---\n$ git-browse              # 浏览器中打开当前项目的远程仓库页面\n$ git-browse-ci           # 浏览器中打开当前项目的 CI 页面\n\n# --- 分支与合并增强 ---\n$ git-bclean              # 删除已合并到当前分支的其他本地分支\n$ git-bulk                # 在多个 Git 仓库中批量执行指定命令\n$ git-delta               # 列出当前分支与指定分支之间有差异的文件列表\n$ git-merge-into          # 将 A 分支合并到 B 分支（无需切换到 B 分支）\n$ git-merge-repo          # 将外部 Git 仓库合并到当前仓库的指定目录并保留历史\n$ git-pull-request        # 创建 GitHub\u002FGitLab 的 Pull Request\n\n# --- 日志、历史与站会 ---\n$ git-changelog           # 依据提交历史生成或更新 CHANGELOG.md\n$ git-commits-since       # 查看指定时间点以来的所有提交记录\n$ git-graft               # 合并指定分支到当前分支并删除原分支\n$ git-standup             # 展示指定作者最近的提交记录\n\n# --- 提交控制与进度管理 ---\n$ git-undo                # 撤销最后一次提交，保留修改至暂存区（同 git reset --soft HEAD~1）\n$ git-wip                 # 创建临时提交以保存当前未完成的工作进度\n$ git-unwip               # 撤销 wip 临时提交并恢复工作区\n$ git-bug                 # 创建 bug 修复分支，修复完成后自动合并并删除该分支\n\n# --- 代码清理与安全删除 ---\n$ git-clear               # 强制清理所有未追踪的文件和目录（比 git clean -fd 更彻底） # [注意] 无法恢复\n$ git-fresh               # 强制拉取远程最新代码并丢弃本地所有未提交修改 # [注意] 覆盖本地，慎用\n$ git-obliterate          # 从所有历史提交中彻底删除指定文件 # [注意] 涉及历史重写，需强推远程\n\n# --- 文件锁定与防误触 ---\n$ git-locked              # 列出被锁定的文件（assume-unchanged 标记）\n$ git-lock                # 锁定指定文件，使其不参与版本追踪与提交\n$ git-unlock              # 解锁指定文件\n\n# --- 仓库初始化与发布 ---\n$ git-setup               # 初始化本地 Git 仓库并交互式配置远程仓库\n$ git-release             # 自动执行发布流程：打 Tag、推送到远程、生成 Release\n$ git-ignore              # 将指定规则或文件追加至 .gitignore 文件\n$ git-alias               # 配置和查看 Git 别名\n",[207,1173,1174,1178,1189,1199,1203,1207,1216,1225,1234,1243,1252,1261,1270,1274,1278,1287,1296,1300,1304,1313,1322,1331,1340,1349,1358,1362,1366,1375,1384,1393,1402,1406,1410,1419,1428,1437,1446,1450,1454,1463,1472,1481,1485,1489,1498,1507,1516,1520,1524,1533,1542,1551],{"__ignoreMap":340},[344,1175,1176],{"class":346,"line":347},[344,1177,640],{"class":385},[344,1179,1180,1182,1185,1187],{"class":346,"line":389},[344,1181,392],{"class":350},[344,1183,1184],{"class":354}," git-extras",[344,1186,652],{"class":354},[344,1188,655],{"class":385},[344,1190,1191,1193,1195,1197],{"class":346,"line":404},[344,1192,392],{"class":350},[344,1194,1184],{"class":354},[344,1196,666],{"class":354},[344,1198,669],{"class":385},[344,1200,1201],{"class":346,"line":411},[344,1202,408],{"emptyLinePlaceholder":407},[344,1204,1205],{"class":346,"line":417},[344,1206,678],{"class":385},[344,1208,1209,1211,1214],{"class":346,"line":429},[344,1210,392],{"class":350},[344,1212,1213],{"class":354}," git-info",[344,1215,690],{"class":385},[344,1217,1218,1220,1223],{"class":346,"line":443},[344,1219,392],{"class":350},[344,1221,1222],{"class":354}," git-root",[344,1224,702],{"class":385},[344,1226,1227,1229,1232],{"class":346,"line":448},[344,1228,392],{"class":350},[344,1230,1231],{"class":354}," git-summary",[344,1233,714],{"class":385},[344,1235,1236,1238,1241],{"class":346,"line":454},[344,1237,392],{"class":350},[344,1239,1240],{"class":354}," git-count",[344,1242,726],{"class":385},[344,1244,1245,1247,1250],{"class":346,"line":460},[344,1246,392],{"class":350},[344,1248,1249],{"class":354}," git-line-summary",[344,1251,738],{"class":385},[344,1253,1254,1256,1259],{"class":346,"line":482},[344,1255,392],{"class":350},[344,1257,1258],{"class":354}," git-effort",[344,1260,750],{"class":385},[344,1262,1263,1265,1268],{"class":346,"line":488},[344,1264,392],{"class":350},[344,1266,1267],{"class":354}," git-churn",[344,1269,762],{"class":385},[344,1271,1272],{"class":346,"line":506},[344,1273,408],{"emptyLinePlaceholder":407},[344,1275,1276],{"class":346,"line":511},[344,1277,771],{"class":385},[344,1279,1280,1282,1285],{"class":346,"line":517},[344,1281,392],{"class":350},[344,1283,1284],{"class":354}," git-browse",[344,1286,783],{"class":385},[344,1288,1289,1291,1294],{"class":346,"line":529},[344,1290,392],{"class":350},[344,1292,1293],{"class":354}," git-browse-ci",[344,1295,795],{"class":385},[344,1297,1298],{"class":346,"line":534},[344,1299,408],{"emptyLinePlaceholder":407},[344,1301,1302],{"class":346,"line":540},[344,1303,804],{"class":385},[344,1305,1306,1308,1311],{"class":346,"line":552},[344,1307,392],{"class":350},[344,1309,1310],{"class":354}," git-bclean",[344,1312,816],{"class":385},[344,1314,1315,1317,1320],{"class":346,"line":557},[344,1316,392],{"class":350},[344,1318,1319],{"class":354}," git-bulk",[344,1321,828],{"class":385},[344,1323,1324,1326,1329],{"class":346,"line":563},[344,1325,392],{"class":350},[344,1327,1328],{"class":354}," git-delta",[344,1330,840],{"class":385},[344,1332,1333,1335,1338],{"class":346,"line":575},[344,1334,392],{"class":350},[344,1336,1337],{"class":354}," git-merge-into",[344,1339,852],{"class":385},[344,1341,1342,1344,1347],{"class":346,"line":580},[344,1343,392],{"class":350},[344,1345,1346],{"class":354}," git-merge-repo",[344,1348,864],{"class":385},[344,1350,1351,1353,1356],{"class":346,"line":586},[344,1352,392],{"class":350},[344,1354,1355],{"class":354}," git-pull-request",[344,1357,876],{"class":385},[344,1359,1360],{"class":346,"line":879},[344,1361,408],{"emptyLinePlaceholder":407},[344,1363,1364],{"class":346,"line":884},[344,1365,887],{"class":385},[344,1367,1368,1370,1373],{"class":346,"line":890},[344,1369,392],{"class":350},[344,1371,1372],{"class":354}," git-changelog",[344,1374,900],{"class":385},[344,1376,1377,1379,1382],{"class":346,"line":903},[344,1378,392],{"class":350},[344,1380,1381],{"class":354}," git-commits-since",[344,1383,913],{"class":385},[344,1385,1386,1388,1391],{"class":346,"line":916},[344,1387,392],{"class":350},[344,1389,1390],{"class":354}," git-graft",[344,1392,926],{"class":385},[344,1394,1395,1397,1400],{"class":346,"line":929},[344,1396,392],{"class":350},[344,1398,1399],{"class":354}," git-standup",[344,1401,939],{"class":385},[344,1403,1404],{"class":346,"line":942},[344,1405,408],{"emptyLinePlaceholder":407},[344,1407,1408],{"class":346,"line":947},[344,1409,950],{"class":385},[344,1411,1412,1414,1417],{"class":346,"line":953},[344,1413,392],{"class":350},[344,1415,1416],{"class":354}," git-undo",[344,1418,963],{"class":385},[344,1420,1421,1423,1426],{"class":346,"line":966},[344,1422,392],{"class":350},[344,1424,1425],{"class":354}," git-wip",[344,1427,976],{"class":385},[344,1429,1430,1432,1435],{"class":346,"line":979},[344,1431,392],{"class":350},[344,1433,1434],{"class":354}," git-unwip",[344,1436,989],{"class":385},[344,1438,1439,1441,1444],{"class":346,"line":992},[344,1440,392],{"class":350},[344,1442,1443],{"class":354}," git-bug",[344,1445,1002],{"class":385},[344,1447,1448],{"class":346,"line":1005},[344,1449,408],{"emptyLinePlaceholder":407},[344,1451,1452],{"class":346,"line":1010},[344,1453,1013],{"class":385},[344,1455,1456,1458,1461],{"class":346,"line":1016},[344,1457,392],{"class":350},[344,1459,1460],{"class":354}," git-clear",[344,1462,1026],{"class":385},[344,1464,1465,1467,1470],{"class":346,"line":1029},[344,1466,392],{"class":350},[344,1468,1469],{"class":354}," git-fresh",[344,1471,1039],{"class":385},[344,1473,1474,1476,1479],{"class":346,"line":1042},[344,1475,392],{"class":350},[344,1477,1478],{"class":354}," git-obliterate",[344,1480,1052],{"class":385},[344,1482,1483],{"class":346,"line":1055},[344,1484,408],{"emptyLinePlaceholder":407},[344,1486,1487],{"class":346,"line":1060},[344,1488,1063],{"class":385},[344,1490,1491,1493,1496],{"class":346,"line":1066},[344,1492,392],{"class":350},[344,1494,1495],{"class":354}," git-locked",[344,1497,1076],{"class":385},[344,1499,1500,1502,1505],{"class":346,"line":1079},[344,1501,392],{"class":350},[344,1503,1504],{"class":354}," git-lock",[344,1506,1089],{"class":385},[344,1508,1509,1511,1514],{"class":346,"line":1092},[344,1510,392],{"class":350},[344,1512,1513],{"class":354}," git-unlock",[344,1515,1102],{"class":385},[344,1517,1518],{"class":346,"line":1105},[344,1519,408],{"emptyLinePlaceholder":407},[344,1521,1522],{"class":346,"line":1110},[344,1523,1113],{"class":385},[344,1525,1526,1528,1531],{"class":346,"line":1116},[344,1527,392],{"class":350},[344,1529,1530],{"class":354}," git-setup",[344,1532,1126],{"class":385},[344,1534,1535,1537,1540],{"class":346,"line":1129},[344,1536,392],{"class":350},[344,1538,1539],{"class":354}," git-release",[344,1541,1139],{"class":385},[344,1543,1544,1546,1549],{"class":346,"line":1142},[344,1545,392],{"class":350},[344,1547,1548],{"class":354}," git-ignore",[344,1550,1152],{"class":385},[344,1552,1553,1555,1558],{"class":346,"line":1155},[344,1554,392],{"class":350},[344,1556,1557],{"class":354}," git-alias",[344,1559,1165],{"class":385},[1561,1562,1563],"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 .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);}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 pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}",{"title":340,"searchDepth":389,"depth":389,"links":1565},[1566,1571],{"id":176,"depth":389,"text":177,"children":1567},[1568,1569,1570],{"id":198,"depth":404,"text":199},{"id":300,"depth":404,"text":301},{"id":325,"depth":404,"text":326},{"id":614,"depth":389,"text":615},"md",null,{},{"icon":104},{"title":106,"description":340},"aMBGuaPAAmYmU7N_BsVZ3c3AVdMiAiSxXT-qvlUwEJY",[1579,1580],{"title":101,"path":102,"stem":103,"description":340,"icon":104,"children":-1},{"title":110,"path":111,"stem":112,"description":340,"icon":104,"children":-1},1789315519655]