[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"knowledge-\u002Fapi\u002Fknowledge\u002Fbooklet\u002Fuphold\u002Fgit\u002Fgit-intro":3,"knowledge-related-\u002Fknowledge\u002Fbooklet\u002Fuphold\u002Fgit\u002Fgit-intro":1010,"knowledge-series-\u002Fknowledge\u002Fbooklet\u002Fuphold\u002Fgit\u002Fgit-intro":1034},{"source":4,"connector":5,"page":6},"sqlite","better-sqlite3",{"path":7,"title":8,"description":9,"category":10,"tags":11,"date":13,"pinned":14,"draft":14,"body":15,"seo":1006,"stem":1007,"id":1008,"extension":1009},"\u002Fknowledge\u002Fbooklet\u002Fuphold\u002Fgit\u002Fgit-intro","Git 基础概念与命令速查","Git 是目前最流行的分布式版本控制系统。本文介绍工作区\u002F暂存区\u002F仓库等核心概念、文件状态流转，并附上日常开发最常用的命令速查表，适合入门学习与日常查阅。","技能小册",[12],"git","2026-07-23",false,{"type":16,"value":17,"toc":995},"minimark",[18,22,37,42,64,68,71,171,177,187,191,194,263,281,285,466,470,716,720,723,851,884,888,909,913,941,944,991],[19,20,8],"h1",{"id":21},"git-基础概念与命令速查",[23,24,25,26,30,31,36],"p",{},"Git 是目前最流行的",[27,28,29],"strong",{},"分布式版本控制系统","。学习路径见 ",[32,33,35],"a",{"href":34},"\u002Fknowledge\u002Fbooklet\u002Fuphold","运维导读","。它用于追踪文件的变化，支持多人协作开发。相比于集中式版本控制（如 SVN），Git 每个开发者本地都拥有完整的仓库历史，不依赖中央服务器就能进行提交、分支、合并等操作。",[38,39,41],"h2",{"id":40},"一什么是-git","一、什么是 Git？",[43,44,45,52,58],"ul",{},[46,47,48,51],"li",{},[27,49,50],{},"版本控制","：记录文件或目录的修改历史，可以随时回退到任意版本，查看修改内容。",[46,53,54,57],{},[27,55,56],{},"分布式","：每个开发者的本地仓库都包含完整的版本历史（不止是最新代码），可以在没有网络的情况下工作，并最终与远程仓库同步。",[46,59,60,63],{},[27,61,62],{},"快照，而非差异","：Git 将每次提交视为一次完整的项目快照，并保存快照的引用，而不是基于文件的差异做增量。",[38,65,67],{"id":66},"二git-的核心区域","二、Git 的核心区域",[23,69,70],{},"Git 管理文件的生命周期涉及四个主要区域：",[72,73,74,90],"table",{},[75,76,77],"thead",{},[78,79,80,84,87],"tr",{},[81,82,83],"th",{},"区域",[81,85,86],{},"英文",[81,88,89],{},"说明",[91,92,93,107,125,146],"tbody",{},[78,94,95,101,104],{},[96,97,98],"td",{},[27,99,100],{},"工作区",[96,102,103],{},"Working Directory",[96,105,106],{},"你在电脑上看到的实际文件目录，可以直接编辑、新增、删除文件。",[78,108,109,114,117],{},[96,110,111],{},[27,112,113],{},"暂存区",[96,115,116],{},"Staging Area \u002F Index",[96,118,119,120,124],{},"一个临时存储区域。使用 ",[121,122,123],"code",{},"git add"," 将工作区的修改放入暂存区，准备下一次提交。",[78,126,127,132,135],{},[96,128,129],{},[27,130,131],{},"本地仓库",[96,133,134],{},"Local Repository",[96,136,137,138,141,142,145],{},"使用 ",[121,139,140],{},"git commit"," 将暂存区的修改持久保存到本地 Git 仓库（",[121,143,144],{},".git"," 目录）。这里存储了完整的提交历史。",[78,147,148,153,156],{},[96,149,150],{},[27,151,152],{},"远程仓库",[96,154,155],{},"Remote Repository",[96,157,158,159,162,163,166,167,170],{},"托管在服务器（如 GitHub、GitLab、Gitee）上的共享仓库。通过 ",[121,160,161],{},"git push"," 将本地提交推送到远程分支，通过 ",[121,164,165],{},"git pull"," \u002F ",[121,168,169],{},"git fetch"," 获取他人的更新。",[23,172,173,176],{},[27,174,175],{},"工作流程图示","：",[178,179,184],"pre",{"className":180,"code":182,"language":183},[181],"language-text","工作区 → (git add) → 暂存区 → (git commit) → 本地仓库 → (git push) → 远程仓库\n                        ↑                             ↓\n                      (git checkout -- \u003Cfile>)    (git pull \u002F fetch)\n                        放弃工作区修改              更新本地\n","text",[121,185,182],{"__ignoreMap":186},"",[38,188,190],{"id":189},"三文件的三种状态","三、文件的三种状态",[23,192,193],{},"Git 中的文件可能处于以下三种状态之一：",[72,195,196,211],{},[75,197,198],{},[78,199,200,203,205,208],{},[81,201,202],{},"状态",[81,204,86],{},[81,206,207],{},"描述",[81,209,210],{},"对应命令",[91,212,213,229,246],{},[78,214,215,220,223,226],{},[96,216,217],{},[27,218,219],{},"已修改",[96,221,222],{},"modified",[96,224,225],{},"文件已被修改（在工作区中进行了编辑），但还没有被标记为要提交。",[96,227,228],{},"编辑文件后自动进入此状态",[78,230,231,236,239,242],{},[96,232,233],{},[27,234,235],{},"已暂存",[96,237,238],{},"staged",[96,240,241],{},"已将修改后的文件添加到暂存区，准备纳入下一次提交。",[96,243,244],{},[121,245,123],{},[78,247,248,253,256,259],{},[96,249,250],{},[27,251,252],{},"已提交",[96,254,255],{},"committed",[96,257,258],{},"暂存区的修改已经安全地保存到本地仓库中，形成历史版本。",[96,260,261],{},[121,262,140],{},[264,265,266],"blockquote",{},[23,267,268,176,271,274,275,277,278,280],{},[27,269,270],{},"注意",[27,272,273],{},"已跟踪（tracked）"," 指的是上一次提交时已经存在的文件，或者已经执行过 ",[121,276,123],{}," 的文件。未跟踪（untracked）是指新创建但从未被 Git 管理的文件（通常需要先 ",[121,279,123],{},"）。",[38,282,284],{"id":283},"四简单示例","四、简单示例",[178,286,290],{"className":287,"code":288,"language":289,"meta":186,"style":186},"language-bash shiki shiki-themes material-theme-lighter github-light github-dark","# 新建文件并查看状态（此时为未跟踪）\necho \"Hello\" > README.md\ngit status      # 显示未跟踪文件\n\n# 添加到暂存区（变为已暂存）\ngit add README.md\n\n# 提交到本地仓库（变为已提交）\ngit commit -m \"add README\"\n\n# 修改工作区文件（变为已修改）\necho \"World\" >> README.md\ngit status      # 显示已修改\n\n# 再次添加到暂存区并提交\ngit add README.md\ngit commit -m \"update README\"\n","bash",[121,291,292,301,326,338,345,351,361,366,372,392,397,403,420,430,435,441,450],{"__ignoreMap":186},[293,294,297],"span",{"class":295,"line":296},"line",1,[293,298,300],{"class":299},"sutJx","# 新建文件并查看状态（此时为未跟踪）\n",[293,302,304,308,312,316,319,323],{"class":295,"line":303},2,[293,305,307],{"class":306},"sptTA","echo",[293,309,311],{"class":310},"sjJ54"," \"",[293,313,315],{"class":314},"s_sjI","Hello",[293,317,318],{"class":310},"\"",[293,320,322],{"class":321},"smGrS"," >",[293,324,325],{"class":314}," README.md\n",[293,327,329,332,335],{"class":295,"line":328},3,[293,330,12],{"class":331},"sbgvK",[293,333,334],{"class":314}," status",[293,336,337],{"class":299},"      # 显示未跟踪文件\n",[293,339,341],{"class":295,"line":340},4,[293,342,344],{"emptyLinePlaceholder":343},true,"\n",[293,346,348],{"class":295,"line":347},5,[293,349,350],{"class":299},"# 添加到暂存区（变为已暂存）\n",[293,352,354,356,359],{"class":295,"line":353},6,[293,355,12],{"class":331},[293,357,358],{"class":314}," add",[293,360,325],{"class":314},[293,362,364],{"class":295,"line":363},7,[293,365,344],{"emptyLinePlaceholder":343},[293,367,369],{"class":295,"line":368},8,[293,370,371],{"class":299},"# 提交到本地仓库（变为已提交）\n",[293,373,375,377,380,384,386,389],{"class":295,"line":374},9,[293,376,12],{"class":331},[293,378,379],{"class":314}," commit",[293,381,383],{"class":382},"stzsN"," -m",[293,385,311],{"class":310},[293,387,388],{"class":314},"add README",[293,390,391],{"class":310},"\"\n",[293,393,395],{"class":295,"line":394},10,[293,396,344],{"emptyLinePlaceholder":343},[293,398,400],{"class":295,"line":399},11,[293,401,402],{"class":299},"# 修改工作区文件（变为已修改）\n",[293,404,406,408,410,413,415,418],{"class":295,"line":405},12,[293,407,307],{"class":306},[293,409,311],{"class":310},[293,411,412],{"class":314},"World",[293,414,318],{"class":310},[293,416,417],{"class":321}," >>",[293,419,325],{"class":314},[293,421,423,425,427],{"class":295,"line":422},13,[293,424,12],{"class":331},[293,426,334],{"class":314},[293,428,429],{"class":299},"      # 显示已修改\n",[293,431,433],{"class":295,"line":432},14,[293,434,344],{"emptyLinePlaceholder":343},[293,436,438],{"class":295,"line":437},15,[293,439,440],{"class":299},"# 再次添加到暂存区并提交\n",[293,442,444,446,448],{"class":295,"line":443},16,[293,445,12],{"class":331},[293,447,358],{"class":314},[293,449,325],{"class":314},[293,451,453,455,457,459,461,464],{"class":295,"line":452},17,[293,454,12],{"class":331},[293,456,379],{"class":314},[293,458,383],{"class":382},[293,460,311],{"class":310},[293,462,463],{"class":314},"update README",[293,465,391],{"class":310},[38,467,469],{"id":468},"五常用命令速查表","五、常用命令速查表",[72,471,472,484],{},[75,473,474],{},[78,475,476,479,482],{},[81,477,478],{},"操作",[81,480,481],{},"命令",[81,483,89],{},[91,485,486,501,516,531,553,567,582,604,622,637,662,682,697],{},[78,487,488,493,498],{},[96,489,490],{},[27,491,492],{},"查看状态",[96,494,495],{},[121,496,497],{},"git status",[96,499,500],{},"显示工作区和暂存区的状态（哪些文件被修改、未跟踪等）",[78,502,503,508,513],{},[96,504,505],{},[27,506,507],{},"添加文件",[96,509,510],{},[121,511,512],{},"git add .",[96,514,515],{},"将当前目录所有变化添加到暂存区（也可以指定具体文件）",[78,517,518,523,528],{},[96,519,520],{},[27,521,522],{},"提交",[96,524,525],{},[121,526,527],{},"git commit -m \"msg\"",[96,529,530],{},"将暂存区内容提交到本地仓库，并附上说明",[78,532,533,538,542],{},[96,534,535],{},[27,536,537],{},"拉取并合并",[96,539,540],{},[121,541,165],{},[96,543,544,545,548,549,552],{},"从远程仓库拉取最新提交并合并到当前分支（相当于 ",[121,546,547],{},"fetch"," + ",[121,550,551],{},"merge","）",[78,554,555,560,564],{},[96,556,557],{},[27,558,559],{},"推送",[96,561,562],{},[121,563,161],{},[96,565,566],{},"将本地分支的提交推送到远程仓库（需设置上游分支）",[78,568,569,574,579],{},[96,570,571],{},[27,572,573],{},"查看历史",[96,575,576],{},[121,577,578],{},"git log --oneline",[96,580,581],{},"以简洁的一行形式显示提交历史（hash + 提交说明）",[78,583,584,589,594],{},[96,585,586],{},[27,587,588],{},"创建分支",[96,590,591],{},[121,592,593],{},"git checkout -b feature",[96,595,596,597,600,601,552],{},"创建并切换到新分支 ",[121,598,599],{},"feature","（Git 2.23+ 也可用 ",[121,602,603],{},"git switch -c feature",[78,605,606,611,616],{},[96,607,608],{},[27,609,610],{},"合并分支",[96,612,613],{},[121,614,615],{},"git merge feature",[96,617,618,619,621],{},"将 ",[121,620,599],{}," 分支合并到当前分支",[78,623,624,629,634],{},[96,625,626],{},[27,627,628],{},"查看差异",[96,630,631],{},[121,632,633],{},"git diff",[96,635,636],{},"显示工作区与暂存区之间的差异（未暂存的改动）",[78,638,639,644,649],{},[96,640,641],{},[27,642,643],{},"撤销工作区修改",[96,645,646],{},[121,647,648],{},"git checkout -- file",[96,650,651,652,655,656,658,659,661],{},"丢弃工作区中对 ",[121,653,654],{},"file"," 的修改，还原到最近一次 ",[121,657,123],{}," 或 ",[121,660,140],{}," 的状态",[78,663,664,669,674],{},[96,665,666],{},[27,667,668],{},"撤销暂存",[96,670,671],{},[121,672,673],{},"git reset HEAD file",[96,675,618,676,678,679],{},[121,677,654],{}," 从暂存区撤回到工作区（保留修改内容），新版也可用 ",[121,680,681],{},"git restore --staged file",[78,683,684,689,694],{},[96,685,686],{},[27,687,688],{},"撤销提交（软回退）",[96,690,691],{},[121,692,693],{},"git reset --soft HEAD~1",[96,695,696],{},"撤销最近一次提交，修改保留在暂存区（可以重新编辑后再次提交）",[78,698,699,704,709],{},[96,700,701],{},[27,702,703],{},"克隆仓库",[96,705,706],{},[121,707,708],{},"git clone \u003Curl>",[96,710,711,712,715],{},"将远程仓库完整克隆到本地，自动创建 ",[121,713,714],{},"origin"," 远程别名和主分支跟踪",[38,717,719],{"id":718},"六进阶命令速查扩展","六、进阶命令速查（扩展）",[23,721,722],{},"除了以上最基础的命令，日常开发中还会频繁用到下面这些：",[72,724,725,736],{},[75,726,727],{},[78,728,729,732,734],{},[81,730,731],{},"场景",[81,733,481],{},[81,735,89],{},[91,737,738,757,772,791,806,821,836],{},[78,739,740,745,750],{},[96,741,742],{},[27,743,744],{},"临时保存改动",[96,746,747],{},[121,748,749],{},"git stash",[96,751,752,753,756],{},"将工作区\u002F暂存区的改动临时收起，切换分支处理紧急任务后再 ",[121,754,755],{},"git stash pop"," 恢复",[78,758,759,764,769],{},[96,760,761],{},[27,762,763],{},"查看 stash 列表",[96,765,766],{},[121,767,768],{},"git stash list",[96,770,771],{},"列出所有暂存的改动",[78,773,774,779,784],{},[96,775,776],{},[27,777,778],{},"变基",[96,780,781],{},[121,782,783],{},"git rebase main",[96,785,786,787,790],{},"将当前分支的提交重新应用到 ",[121,788,789],{},"main"," 最新提交之上，保持线性历史",[78,792,793,798,803],{},[96,794,795],{},[27,796,797],{},"摘取单个提交",[96,799,800],{},[121,801,802],{},"git cherry-pick \u003Chash>",[96,804,805],{},"将某个提交的改动应用到当前分支（不需要合并整个分支）",[78,807,808,813,818],{},[96,809,810],{},[27,811,812],{},"图形化历史",[96,814,815],{},[121,816,817],{},"git log --oneline --graph --all",[96,819,820],{},"以图形方式查看所有分支的提交走向",[78,822,823,828,833],{},[96,824,825],{},[27,826,827],{},"查找引入 bug 的提交",[96,829,830],{},[121,831,832],{},"git bisect start",[96,834,835],{},"通过二分查找定位引入问题的提交",[78,837,838,843,848],{},[96,839,840],{},[27,841,842],{},"查看某行的最后修改人",[96,844,845],{},[121,846,847],{},"git blame \u003Cfile>",[96,849,850],{},"逐行显示文件的最后修改提交与作者",[264,852,853],{},[23,854,855,176,858,860,861,864,865,867,868,871,872,875,876,879,880,883],{},[27,856,857],{},"提示",[121,859,512],{}," 添加当前目录所有变化（包括新建、修改、删除）；",[121,862,863],{},"git add -A"," 添加整个工作区的变化。",[121,866,165],{}," 默认会合并（merge），若希望保持线性历史可使用 ",[121,869,870],{},"git pull --rebase","。",[121,873,874],{},"git checkout -- \u003Cfile>"," 和 ",[121,877,878],{},"git reset"," 操作不可逆，请谨慎使用，尤其在 ",[121,881,882],{},"--hard"," 模式下。",[38,885,887],{"id":886},"七注意事项","七、注意事项",[43,889,890,898,906],{},[46,891,892,893,166,895,897],{},"提交前先用 ",[121,894,497],{},[121,896,633],{}," 确认改动范围，避免误提交无关文件。",[46,899,900,901,905],{},"命令别名（见 ",[32,902,904],{"href":903},"\u002Fknowledge\u002Fbooklet\u002Fuphold\u002Fgit\u002Fgit-setup","Git 安装与配置","）可以极大提升效率，建议尽早配置。",[46,907,908],{},"具体的分支、远程协作、历史回退等操作，详见后续章节。",[38,910,912],{"id":911},"八小结","八、小结",[43,914,915,918,921,924],{},[46,916,917],{},"Git 是分布式版本控制系统，每个开发者都有完整的仓库副本。",[46,919,920],{},"文件变化在工作区、暂存区、本地仓库之间流动，最终通过远程仓库协作。",[46,922,923],{},"文件状态分为已修改、已暂存、已提交三种，理解这些是掌握 Git 的基础。",[46,925,926,927,930,931,930,934,930,937,940],{},"掌握本文的速查表后，可以进行日常的 ",[121,928,929],{},"add","、",[121,932,933],{},"commit",[121,935,936],{},"push",[121,938,939],{},"pull"," 等操作；更复杂的场景可查阅后续章节。",[38,942,943],{"id":943},"参考文献",[72,945,946,955],{},[75,947,948],{},[78,949,950,953],{},[81,951,952],{},"资料",[81,954,89],{},[91,956,957,970,982],{},[78,958,959,967],{},[96,960,961],{},[32,962,966],{"href":963,"rel":964},"https:\u002F\u002Fgit-scm.com\u002Fbook\u002Fen\u002Fv2\u002FGetting-Started-About-Version-Control",[965],"nofollow","Pro Git · 起步",[96,968,969],{},"官方书",[78,971,972,979],{},[96,973,974],{},[32,975,978],{"href":976,"rel":977},"https:\u002F\u002Fgit-scm.com\u002Fdocs",[965],"Git 文档",[96,980,981],{},"命令参考",[78,983,984,988],{},[96,985,986],{},[32,987,35],{"href":34},[96,989,990],{},"本目录路径",[992,993,994],"style",{},"html pre.shiki code .sutJx, html code.shiki .sutJx{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}html pre.shiki code .sptTA, html code.shiki .sptTA{--shiki-light:#6182B8;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .smGrS, html code.shiki .smGrS{--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sbgvK, html code.shiki .sbgvK{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .stzsN, html code.shiki .stzsN{--shiki-light:#91B859;--shiki-default:#005CC5;--shiki-dark:#79B8FF}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":186,"searchDepth":303,"depth":303,"links":996},[997,998,999,1000,1001,1002,1003,1004,1005],{"id":40,"depth":303,"text":41},{"id":66,"depth":303,"text":67},{"id":189,"depth":303,"text":190},{"id":283,"depth":303,"text":284},{"id":468,"depth":303,"text":469},{"id":718,"depth":303,"text":719},{"id":886,"depth":303,"text":887},{"id":911,"depth":303,"text":912},{"id":943,"depth":303,"text":943},{"title":8,"description":9},"knowledge\u002Fbooklet\u002Fuphold\u002FGit\u002Fgit-intro","knowledge\u002Fknowledge\u002Fbooklet\u002Fuphold\u002FGit\u002Fgit-intro.md","md",{"items":1011},[1012,1016,1020,1023,1027,1030],{"path":1013,"title":1014,"description":1015,"category":10,"score":353},"\u002Fknowledge\u002Fbooklet\u002Fuphold\u002Fgit\u002Fgit-branching","Git 分支、远程协作与标签管理","涵盖分支的创建、切换、合并与删除，远程仓库的管理、推送与拉取，以及标签（Tag）的创建、查看、推送与删除，是团队协作的核心内容。",{"path":1017,"title":1018,"description":1019,"category":10,"score":353},"\u002Fknowledge\u002Fbooklet\u002Fuphold\u002Fgit\u002Fgit-history","Git 查看历史、撤销回退与冲突解决","涵盖 git log \u002F git diff 查看提交历史与差异，commit --amend \u002F reset \u002F revert 的撤销与回退方式对比，以及合并、拉取、变基时冲突的产生原因与解决步骤。",{"path":903,"title":1021,"description":1022,"category":10,"score":353},"Git 安装、配置与仓库初始化","涵盖 Windows \u002F macOS \u002F Linux 下 Git 的安装方式、首次使用的全局配置（用户名、邮箱、别名等）、创建或克隆仓库的方式，以及 .gitignore 忽略规则的编写方法。",{"path":1024,"title":1025,"description":1026,"category":10,"score":353},"\u002Fknowledge\u002Fbooklet\u002Fuphold\u002Fgit\u002Fgit-workflow","Git 基础工作流与协作场景","涵盖日常文件级操作（状态查看、暂存、提交、撤销、删除、重命名）与团队协作中的常见场景示例（个人提交、功能分支开发、同步主分支、误提交撤销等）。",{"path":34,"title":1028,"description":1029,"category":10,"score":340},"运维与协作导读","本目录覆盖日常开发运维中的 Git 版本控制、Docker 容器化与 Nginx 服务网关，与 工程化 · Git、部署相关 等章节互补，提供完整的十阶段学习路径。",{"path":1031,"title":1032,"description":1033,"category":10,"score":340},"\u002Fknowledge\u002Fbooklet\u002Fproject\u002Fproject\u002Fgit","Git 配置","版本控制常用 .gitignore（忽略不需纳入仓库的文件）与 .gitattributes（统一换行、diff、合并策略等）。见 工程化概览。",{"series":1035,"title":12,"items":1036,"index":303,"prev":1042,"next":1043},"booklet\u002Fuphold\u002Fgit",[1037,1038,1039,1040,1041],{"path":1013,"title":1014,"date":13,"pinned":14},{"path":1017,"title":1018,"date":13,"pinned":14},{"path":7,"title":8,"date":13,"pinned":14},{"path":903,"title":1021,"date":13,"pinned":14},{"path":1024,"title":1025,"date":13,"pinned":14},{"path":1017,"title":1018,"date":13,"pinned":14},{"path":903,"title":1021,"date":13,"pinned":14}]