尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

Git 克隆远程仓库全指南:从 SSH 密钥配置到 git clone 参数与避坑

发布时间:2026/9/26 20:40:59

资讯中心
01
ARTICLE

Git 克隆远程仓库全指南:从 SSH 密钥配置到 git clone 参数与避坑

Git 克隆远程仓库全指南:从 SSH 密钥配置到 git clone 参数与避坑
还记得我第一次用 Git 的时候光是把远程仓库里的代码弄到本地就折腾了半天。那时候不懂原理只会在网上复制命令跑通了就欢天喜地跑不通就一脸懵。后来带新人多了发现“克隆远程仓库git clone”几乎卡住了每一个 Git 初学者。甚至很多干了两三年开发的人还是会因为地址选错、密钥没配、分支没拉全这类低级问题翻车。所以这篇我打算按“能直接照着做”的标准从零开始把克隆这件事讲透环境怎么装、密钥怎么配、HTTPS 和 SSH 地址怎么选、各种参数有什么用、连 clone 之后容易踩的坑也一起说清楚。不管你是刚接触 Git 的学生还是刚入职需要拉公司代码的初级开发按这篇的步骤走基本不会再被这类问题拦住。1. 环境准备先把 Git 安装和基础配置搞定1.1 各系统下安装 Git 的实操方式克隆远程仓库的前提是本地有 Git 环境这一步看似简单但很多人在安装环节就埋了坑。我先按平台把装法过一遍再重点讲配置。Windows 用户的话我建议直接去 Git 官网下载安装包版本选 64-bit 的稳定版。安装过程中有几个选项需要留意一是“Adjusting your PATH environment”一定选中间那项“Git from the command line and also from 3rd-party software”这样 CMD、PowerShell、Git Bash 都能直接识别git命令二是换行符转换选项如果项目是纯 Windows 团队选“Checkout as-is, commit as-is”更省心如果涉及跨平台协作保持默认推荐的 “Checkout Windows-style, commit Unix-style” 通常也没问题。装完打开任意终端输入git --version能看到版本号就说明装好了。macOS 上最省事的做法是从 App Store 安装 Xcode Command Line Tools它会自动把 Git 带进来。也可以装 Homebrew 后用brew install git好处是能得到较新的版本。Linux 用户按发行版来Ubuntu/Debian 用sudo apt install gitCentOS/RHEL 用sudo yum install gitFedora 用sudo dnf install git。1.2 两个最容易忽略的全局配置安装完立刻要做的两件事设置用户名和邮箱以及优化命令行输出。用户名和邮箱不设你克隆代码没问题但一旦提交代码就会报“Please tell me who you are”错误因为 Git 要用身份信息生成提交记录。设置方式git config --global user.name 你的昵称 git config --global user.email 你的邮箱注意邮箱最好和远程平台如 GitHub、Gitee的注册邮箱一致这样提交记录能正确关联到你的账号。再说说命令行输出优化。如果你在 Windows 的 PowerShell 或 CMD 里用 Git中文文件名在git status中可能会显示成转义序列比如\345\233\276\347\211\207.png。这个问题在热词里出现过就是core.quotepath false的配置。执行git config --global core.quotepath false之后中文文件名就能正常显示。建议顺手把默认编辑器也改掉比如 VS Code 用户执行git config --global core.editor code --wait这样以后提交信息需要手动编辑时不会卡在 Vim 里出不来。配置完成后用git config --global --list检查一遍看到 user.name、user.email、core.quotepath 都正确即可。这一步做完克隆前的环境准备才算结束。2. 连接远程仓库前的关键准备——SSH 密钥配置2.1 HTTPS 地址和 SSH 地址的区别克隆远程仓库最常用的两种地址是 HTTPS 和 SSH热词里也出现了“git 配置 gitee 密钥”说明很多人在实操中经常需要处理 SSH。我的建议很明确只要是长期开发优先选 SSH。原因很简单。HTTPS 方式在克隆公共仓库时不需要认证挺方便但当你需要 clone 私有仓库或之后推送代码时每次都要输入用户名和密码或 Personal Access Token而且不同平台 Token 的过期策略还不一样忘了一次就得重新生成。SSH 方式在配置好密钥后本地和远程平台之间走的是非对称加密认证克隆、拉取、推送全部免密一劳永逸。换成人话就是HTTPS 像临时访客卡每次进门都要登记SSH 像人脸识别工牌录一次指纹以后随便进出。2.2 密钥生成三步走第一步确认本地是否已有密钥。一般用户的~/.ssh目录下会有id_rsa、id_rsa.pub这类文件id_rsa是私钥id_rsa.pub是公钥。有就不用重新生成没有就继续下一步。第二步生成新密钥。打开终端Windows 用户用 Git Bash输入ssh-keygen -t rsa -b 4096 -C 你的邮箱-t rsa指定算法类型-b 4096指定密钥长度4096 比默认的 2048 更安全。执行后会提示保存路径默认位置直接回车即可如果多平台使用不同密钥建议输入独立文件名比如id_rsa_gitee避免互相覆盖。接下来是设置 passphrase也就是私钥的保护密码可以留空但出于安全考虑设一个常用短语更稳妥。第三步把公钥内容填到远程平台。用cat ~/.ssh/id_rsa.pubWindows 的 Git Bash 同样适用输出公钥复制整段内容。以 Gitee 为例进入“设置 → 安全设置 → SSH 公钥”粘贴并命名即可。GitHub 则在“Settings → SSH and GPG keys → New SSH key”里操作。原理是私钥留在本地公钥上传到平台握手认证时平台用公钥验证你手中的私钥。配置完一定要测试。以 GitHub 为例ssh -T gitgithub.com首次连接会提示确认指纹输入yes。看到Hi username! Youve successfully authenticated就说明通了。Gitee 则用ssh -T gitgitee.com。到这里远程平台的连接通道就打通了。3. 核心实操git clone 命令的详细拆解3.1 最基本的克隆命令与地址选择准备工作全部结束现在可以正式克隆了。最基础的命令是git clone 远程仓库地址 [本地目录名]远程地址两种都行区别前面讲过。例如# HTTPS 方式 git clone https://github.com/example/repo.git # SSH 方式 git clone gitgithub.com:example/repo.git如果不指定本地目录名Git 会以仓库名创建文件夹比如repo.git会生成本地项目目录repo如果指定了my-project就生成my-project文件夹。这里有个容易踩坑的细节如果指定的路径是当前目录用一个点.比如git clone 地址 .Git 不会新建文件夹而是直接把代码克隆到当前目录下。这个操作适合你已经建好了空项目文件夹、但目录名和仓库名不一致的情况。注意这个目录必须为空否则 Git 会报fatal: destination path . already exists and is not an empty directory。克隆的速度取决于仓库大小和网络环境。下载过程中会先后执行多个阶段先是接收对象Counting objects然后是压缩对象Compressing objects最后是接收对象并计算差异Resolving deltas全部完成就自动切换到了默认分支通常是master或main。克隆完成后用cd进到目录执行git remote -v会看到类似origin https://github.com/example/repo.git (fetch) origin https://github.com/example/repo.git (push)这表示远程仓库已经以origin名字保存在本地配置里之后所有git pull、git push都会默认和它通信。3.2 按需拉取的几个高频参数基础 clone 能应对大多数情况但实际项目里需求会更复杂。这里必须把几个高频参数讲透。**-b 分支名克隆时直接指定分支。**默认情况下git clone会把远程仓库里所有分支都拉下来然后检出默认分支。如果你明确知道要用某个分支比如项目的最新版本维护在dev分支执行git clone -b dev 地址就能直接检出dev省掉克隆后再切换分支的步骤。**--depth 数值浅克隆。**这是我最常用也最推荐给新人的参数。对于一个历史悠久的大仓库完整克隆可能下载几百 MB 甚至几个 GB 的历史数据但绝大多数情况下你只需要最新的一版代码。git clone --depth 1 地址表示只拉取最近 1 次提交的记录下载体积几乎能缩小一个数量级。做完浅克隆后用git log 查看只会看到最新一条提交记录这会影响到基于历史的操作但日常开发完全够用。**--recursive / --recurse-submodules拉取子模块。**如果仓库通过 submodule 引入了其他仓库比如常见的项目依赖了一些公共组件库普通 clone 只会拉主仓库子模块目录里是空的。加上这个参数才能一并拉下来。这个参数的完整写法在新版本中是git clone --recurse-submodules 地址旧版本则是--recursive两个在多数环境中可互换。另外有些项目单独提供子模块的地址你还需要先在平台页面确认避免漏配。**--single-branch只拉取指定分支的提交记录。**默认 clone 会建立所有远程分支的跟踪--single-branch则让本地只保留最近的一个分支。如果需要干净精简的本地仓库可以用这个参数配合-b。不过要注意之后如果你想拉取其他分支需要手动git remote set-branches做调整不太建议新手一开始就依赖它。**--mirror镜像克隆。**这个属于进阶用法一般用于搭建仓库备份或迁移场景。它会完整克隆远程仓库的所有引用包括本地分支、远程分支、标签等并在本地建立起“裸仓库”结构。日常开发不要用它不能像普通仓库那样直接工作的。还有一个参数我要推荐给 Windows 用户-c core.autocrlffalse。如果项目里既有 Windows 又有 Linux 开发者换行符问题会引发一堆诡异的差异用了这个参数能统一按原始内容拉取减少无意义的文件变更。3.3 克隆过程中的交互细节克隆不是一条命令就完事中间可能出现各种交互提示。最常见的两种第一种是首次连接 SSH 时的主机指纹确认。你第一次访问某台 SSH 主机时终端会显示一段指纹并要求输入yes确认。有人在这里输入y发现没反应卡住了。注意 Git 的安全策略只认yes必须完整拼写否则会中止连接。第二种是私钥 passphrase 输入。如果你在生成密钥时设置了保护密码连接时会提示Enter passphrase for key输入时终端不会显示星号直接回车即可。这个和密码输入一样盲打后回车如果密码错误会重新提示。另外克隆大仓库时感觉像卡住了实际上 Git 在下载对象阶段会分段显示进度。如果长时间毫无动静可以按Ctrl C终止后换用浅克隆参数重试。Windows 用户如果遇到杀毒软件实时扫描拉低了 IO 速度可以暂时把项目目录加入白名单但日常不建议关闭防护。克隆完成后的目录里不仅有项目文件还有一个隐藏的.git目录。里面保存了仓库的全部历史记录、分支引用和远程配置是整个仓库的核心。平时不要手动改动它也不要把这个目录放进另一个 Git 仓库里会引发嵌套仓库的误判。4. 克隆之后的日常操作与常见问题排查4.1 从“克隆成功”到“正常提交”pull、push、commit --amend不少人克隆完代码就以为自己会 Git 了结果第一次提交就翻车。克隆只是起点真正的日常工作流有三个高频命令要熟练。第一个是git pull。团队协作时远程代码持续变动本地落后情况下推送会报non-fast-forward错误。正确姿势是先拉取git pull origin main这会执行两步先fetch把远程更新取回本地再merge合并到当前分支。如果只想看远程有哪些更新而不想合并用git fetch单独执行。遇到合并冲突问题只需找到对应文件确认最终要保留哪些内容并删除冲突标记线再重新提交即可。拉取远程更新时每次格式都可以保持一致。第二个是git push。第一次推送到新仓库时需要指定远程分支git push -u origin main-u表示建立本地分支和远程分支的追踪关系以后直接git push就行。执行过程中SSH 方式不会要求输入密码HTTPS 方式则需要输入账号密码或个人访问令牌。第三个是git commit --amend这个在热词里出现了确实容易困惑。它的作用是修改最近一次提交的信息或者补充漏掉的文件。比如你刚提交完发现少加了一个文件可以git add 漏掉的文件 git commit --amend这样会打开编辑界面让你修改提交信息保存后新提交会取代原来的提交不会产生多余的提交记录。但有一点务必注意如果这次提交已经 push 到了远程仓库且是别人正在基于它开发的公共分支绝对不要用 amend因为历史被重写后其他人拉取时会冲突。它只适合修改还在本地、没有推送的提交。4.2 克隆及后续环节的高频报错速查多年的经验告诉我克隆相关的报错无非集中在四个方向。我把它们整理成了速查表方便对照。报错信息原因解决方案Permission denied (publickey)SSH 密钥未配置或未添加到平台重新生成本地密钥粘贴公钥到远程平台再用ssh -T测试连接Authentication failed/Logon failedHTTPS 方式密码或 Token 错误改用 SSH 方式或在平台生成新的 Personal Access Tokenfatal: unable to access ... Failed to connect网络不通或代理配置错误检查网络手动git config --global http.proxy或取消代理配置fatal: repository not found仓库地址错误或权限不足确认地址是否准确确认账号是否被仓库所有者授权SSL certificate problemWindows 下 Git 证书链问题更新 Git 到最新版公司内网自签证书环境下可临时git config --global http.sslVerify false仅限受信网络filename too longWindows 默认最大路径长度限制在 Git 中执行git config --global core.longpaths true并在系统注册表中启用 LongPathsRPC failed; HTTP curl error仓库过大导致传输中断使用--depth 1浅克隆或者对受信仓库用--filterblob:none做稀疏下载这里特别说一下Permission denied (publickey)它的出现概率最高。我见过很多新人明明把公钥贴到了平台上还是报这个错原因通常是 SSH 尝试了默认文件名但你用了别的文件名需要在~/.ssh/config里创建 Host 配置并显式指定 IdentityFile或者直接把私钥复制为默认的id_rsa。还有一种是多个平台密钥混用GitHub 用了 A 密钥Gitee 用了 B 密钥结果平台不匹配也会报权限拒绝。这时候最好为不同 Host 配置独立密钥避免串用。另一个值得关注的是RPC failed。大仓库克隆经常遇到尤其在公司限速网络下。浅克隆参数确实能立竿见影但也有个隐性代价后续你要查看历史提交、切换分支时需要额外git fetch --unshallow补全历史。所以大仓库场景我会先试--depth 1确认能跑通项目再视情况决定是否需要全量历史。4.3 一点实操心得克隆不是复制最后分享一个个人体会。很多人把“克隆远程仓库”理解成“把代码复制到本地”这个理解对了一半。复制是单向的克隆却建立了完整的双向通信关系。你本地每一个提交、分支、标签都保留着和origin的关联。这也解释了为什么克隆后的项目目录里会有.git文件夹——整个仓库的灵魂就在那里。在实际工作中我一般建议新人用 SSH 方式建立长期连接用浅克隆节省下载时间再配合git remote -v确认远程连接正确。等你把pull、push、commit --amend这几个命令用顺了Git 的基本操作就算真正入门了。至于更多高级玩法比如子模块维护、稀疏检出、rebase 策略都是在“克隆成功”之后对同一个仓库持续操作时慢慢积累起来的经验。最后再分享一个小技巧如果你不确定某个参数怎么搭配使用不要急着在正式项目里试。本地随便建一个文件夹git init成一个临时仓库所有克隆、提交、分支操作都可以在那个沙盒里大胆尝试。踩过坑的才算会Git 这工具练一遍胜过看十遍教程。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。